码迷,mamicode.com
首页 > 其他好文 > 详细

1.单链表

时间:2020-07-11 17:43:21      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:head   下标   http   一个   基础   oid   头结点   com   font   

技术图片

 技术图片

 技术图片

 数组模拟单链表,图论的基础

单链表用的最多的是邻接表,邻接表是n个单链表,邻接表是树和图的存储方式

单链表 >> 邻接表 >> 存储树和图

技术图片

 单链表开始时是head指向空节点

插入元素后长这样

技术图片

 每个节点存储两个值

值:val

指针:next

 然后用数组模拟就需要定义几个数组

e[N]:存储每个节点的val值

ne[N]:存储每个点的next指针是多少

每个节点都有编号,空节点用-1表示

e[i]和ne[i]是用下标关联起来

0号点的值就是e[0],0号点的next指针就是ne[0] = 1

技术图片

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 100010;
 4 //head表示头结点下标
 5 //e[i]表示节点i的值 
 6 //ne[i]表示节点i的next指针是多少,就是说节点i的下一个点的下标是什么
 7 //idx存储当前已经用到了哪个点
 8 //注意idx是从0开始的,0号点是第一个插入的点,第k个插入点的下标是k - 1
 9 //当我们需要分配一个新的点的时候,把当前idx指向的节点分配给它,然后idx++
10 int head, e[N], ne[N], idx;
11 //初始化 
12 void init() {
13     head = -1;
14     idx = 0; //当前可以从0号点开始分配
15 }
16 //将值为x的节点插入到头结点 
17 void add_to_head(int x) {
18     e[idx] = x;
19     ne[idx] = head;
20     head = idx;
21     idx++;
22 }
23 //将值为x的节点插入到下标为k的节点后面
24 //在下标是k - 1的点后面插入一个点
25 void add(int k, int x) {
26     e[idx] = x;
27     ne[idx] = ne[k];
28     ne[k] = idx;
29     idx++;
30 }
31 //将下标为k的节点的后面的一个节点删除
32 //第k个插入点的下标是k - 1
33 void remove(int k) {
34     ne[k] = ne[ne[k]];
35 } 
36 int main() {
37     init();
38     int m;
39     cin >> m;
40     while (m--) {
41         int k, x;
42         string c;
43         cin >> c;
44         if (c[0] == H) {
45             cin >> x;
46             add_to_head(x);
47         } else if (c[0] == D) {
48             cin >> k;
49             if (k == 0) {
50                 head = ne[head];
51             } else {
52                 remove(k - 1);
53             }
54         } else {
55             cin >> k >> x;
56             add(k - 1, x);
57         }
58     }
59     for (int i = head; i != -1; i = ne[i]) {
60         cout << e[i] << " ";
61     }
62     cout << endl;
63     return 0;
64 }

 

1.单链表

标签:head   下标   http   一个   基础   oid   头结点   com   font   

原文地址:https://www.cnblogs.com/fx1998/p/13284023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!