当前位置:   article > 正文

单链表_单链表ai和a1

单链表ai和a1

单链表

Method

包含插入删除操作,具体请看代码

Example

实现一个单链表,链表初始为空,支持三种操作:

(1) 向链表头插入一个数;

(2) 删除第k个插入的数后面的数;

(3) 在第k个插入的数后插入一个数

现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。

注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。

输入格式

第一行包含整数M,表示操作次数。

接下来M行,每行包含一个操作命令,操作命令可能为以下几种:

(1) “H x”,表示向链表头插入一个数x。

(2) “D k”,表示删除第k个输入的数后面的数(当k为0时,表示删除头结点)。

(3) “I k x”,表示在第k个输入的数后面插入一个数x(此操作中k均大于0)。

输出格式

共一行,将整个链表从头到尾输出。

数据范围

1≤M≤1000001≤M≤100000
所有操作保证合法。

输入样例:

  1. 10
  2. H 9
  3. I 1 1
  4. D 1
  5. D 0
  6. H 6
  7. I 3 6
  8. I 4 5
  9. I 4 5
  10. I 3 4
  11. D 6

输出样例:

6 4 6 5
  1. #include <iostream>
  2. using namespace std;
  3. const int N = 100010;
  4. //head表示头节点下标
  5. //e[i]表示节点i的值
  6. //ne[i]表示节点i的next指针是多少
  7. //idx存储当前已经用到了哪个点
  8. int head, e[N], ne[N], idx;
  9. //初始化
  10. void init()
  11. {
  12. head = -1;
  13. idx = 0;
  14. }
  15. //将x插到头节点
  16. void add_to_head(int x)
  17. {
  18. //1、将next指针指向head节点指向的值 2、将head指针删除,指向插入节点x指针 3、当前idx节点,将x值存起来 4、idx走到下一个位置
  19. e[idx] = x, ne[idx] = head, head = idx, idx ++;
  20. }
  21. //将x插到下标是k的点后面
  22. void add(int k, int x)
  23. {
  24. //1、将当前点next指针指向k点下一个位置 2、将k点下一个位置指向第二个点
  25. e[idx] = x;
  26. ne[idx] = ne[k];//1、next指针指向k->next
  27. ne[k] = idx;//2、k点下一个位置指向idx
  28. idx ++;
  29. }
  30. //把k后面的点删除掉
  31. void remove(int k)
  32. {
  33. ne[k] = ne[ne[k]];//ne移到ne->ne后面
  34. }
  35. int main()
  36. {
  37. int m;
  38. cin >> m;
  39. init();
  40. while(m --)
  41. {
  42. int k, x;
  43. char op;
  44. cin >> op;
  45. if(op == 'H')
  46. {
  47. cin >> x;
  48. add_to_head(x);
  49. }
  50. else if (op == 'D')
  51. {
  52. cin >> k;
  53. if (!k) head = ne[head];//如果k=0,则head指向head
  54. remove(k - 1);
  55. }
  56. else
  57. {
  58. cin >> k >> x;
  59. add(k - 1, x);
  60. }
  61. }
  62. for (int i = head; i != -1; i = ne[i]) cout << e[i] << ' ';
  63. cout<<endl;
  64. return 0;
  65. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/422831
推荐阅读
相关标签
  

闽ICP备14008679号