当前位置:   article > 正文

数据结构—链表(数组模拟链表)C++_什么是链表模拟

什么是链表模拟

一、数组模拟链表定义与意义

       传统的链表往往用含有指针的结构体构造,每一次增加一个数据项都要进行一次new操作,效率很低,用数组模拟链表大大提高了算法的效率。单链表最大的用途是用来写邻接表,邻接表主要用来存储图和树。双链表多用于优化单链表。

二、单链表实现方法和代码

用两个数组来模拟,一个用于储存节点的值,一个用于存放指针。

  1. #include<iostream>
  2. using namespace std;
  3. const int N=100010;
  4. int head;//头节点的位置
  5. int e[N];//节点的值
  6. int ne[N];//指向下一个的指针
  7. int idx=0;//当前用到数组第几个空间
  8. //下面贴几个常用函数操作
  9. void initial()
  10. {
  11. head=-1;
  12. idx=0;
  13. }//初始化
  14. void head_insert(int x)
  15. {
  16. e[idx]=x;
  17. ne[idx]=head;
  18. head=idx;
  19. idx++;
  20. }//头插
  21. void tail_insert(int &tail,int x)
  22. {if(head==-1)head++;
  23. ne[tail]=idx;
  24. tail=idx;
  25. e[idx++]=x;
  26. }//尾插
  27. void insert(int k,int x)
  28. {
  29. e[idx]=x;
  30. ne[idx]=ne[k];
  31. ne[k]=idx;
  32. idx++;
  33. }//插入
  34. void Delete(int k)
  35. {
  36. ne[k]=ne[ne[k]];
  37. }//删除
  38. int main()
  39. {
  40. return 0;
  41. }

三、双链表的实现方法

双链表和单链表的区别就在于双链表需要开两个数组来存放指针,left[ ], right[ ]

具体增删改查操作很容易在单链表的基础上扩展。

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

闽ICP备14008679号