数据结构笔记

1.单链表   https://www.acwing.com/problem/content/828/

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int N = 100010;
 5 
 6 
 7 int head,e[N],ne[N],idx;
 8 //head表示头节点的下标
 9 //e[i]表示节点i的值
10 //ne[i]表示节点i的next指针的值(指向哪里)
11 //idx存储当前已经用到了哪个点
12 
13 void init() //初始化链表
14 {
15     head = -1;
16     idx = 0;
17 }
18 
19 //将x插到头节点
20 void add_to_head(int x)
21 {
22     e[idx] = x; //定义x的值;
23     ne[idx] = head;   //使idx的next指针 指向 head的next的指针;
24     head = idx;  //重新使head的next指针指向 idx;
25     idx ++; //存储的点加一;
26     
27 }
28 
29 //将x插到下标是k的后面
30 void add(int k,int x)
31 {
32     e[idx] = x;
33     ne[idx] = ne[k];
34     ne[k] = idx;
35     idx ++ ;
36 }
37 
38 //将下标是k的点的后面的点删掉
39 void remove(int k)
40 {
41     ne[k] = ne[ne[k]];
42 }
43 
44 int main()
45 {
46     int m;
47     cin >> m;
48     
49     head = -1;
50     
51     while (m -- )
52     {
53         int x,k;
54         char op[2];
55         
56         cin >> op;
57         if(*op == 'H')
58         {
59             cin >> x;
60             add_to_head(x);
61         }
62         else if(*op == 'D')
63         {
64             cin >> k;
65             if(!k) head = ne[head];
66             remove(k - 1);
67         }
68         else 
69         {
70             cin >> k >> x;
71             add(k - 1,x);
72         }
73     }
74     for (int i = head; i != -1; i = ne[i] ) cout << e[i] << ' ';
75     cout << endl;
76 }
View Code
复制代码

2.双链表

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int m,e[N],l[N],r[N],idx;
 5 
 6 void init()
 7 {
 8     r[0] = 1,l[1] = 0;
 9     idx = 2;
10 }
11 
12 //在第k个点的右边插入一个点x;
13 //若要在左边插入,只需add(l[r[k]],x),即在r[k]左边的这个数的右边插入一个数
14 void add(int k,int x)
15 {
16     e[idx] = x;
17     r[idx] = r[k];
18     l[idx] = k;
19     l[r[k]] = idx;
20     r[k] = idx;
21 }
22 
23 //删除第k个点
24 void remove(int k)
25 {
26     r[l[k]] = r[k];
27     l[r[k]] = l[k];
28 }
View Code
复制代码

 

posted @   rw156  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示