- 1. 题目
- 2. 读题(需要重点注意的东西)
- 3. 解法
- 4. 可能有帮助的前置习题
- 5. 所用到的数据结构与算法思想
- 6. 总结
初步思路:结构体和指针的方法,面试常用,但是笔试不常用的方法。原因是每次都要new一个新Node,太慢了。
因此在本文中使用静态链表,即用数组模拟链表。
-
插入操作
头插法
在下标为k的数的下一位插入
-
删除操作
---------------------------------------------------解法---------------------------------------------------
#include4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结using namespace std; const int N = 1e5; int idx,head,e[N],ne[N]; void init(){ idx = 0; head = -1; } void add_to_head(int x){ e[idx] = x; ne[idx] = head; head = idx; idx++; } void add(int k,int x){ e[idx] = x; ne[idx] = ne[k]; ne[k] = idx; idx++; } void remove(int k){ ne[k] = ne[ne[k]]; } int main(){ init(); int m; cin >> m; while(m--){ char op; cin >> op; if(op == 'H'){ int x; cin >> x; add_to_head(x); } else if(op == 'D'){ int k ; cin >> k; if(!k) head=ne[head]; remove(k-1); } else if(op == 'I'){ int k ,x; cin >> k >> x; add(k-1,x); } } for(int i = head;i != -1;i = ne[i]) cout << e[i] <<" "; cout << endl; return 0; }
单链表用静态数组实现模板题,推荐完全背下来。


![[AcWing]826. 单链表(C++实现)单链表模板题 [AcWing]826. 单链表(C++实现)单链表模板题](http://www.mshxw.com/aiimages/31/429643.png)
