当前位置:   article > 正文

单链表的按位序插入_单链表按位插

单链表按位插

1.按位序插入(带头节点)

  1. typedef struct LNode{
  2. ElemType data;
  3. struct LNode *next;
  4. }LNode *LinkList;//初始化一个单链表(带头节点)
  5. bool InitList(LinkList &L){
  6. L=(LNode*)malloc(sizeof(LNode));//头指针指向的节点分配一个头节点(不分配数据)
  7. if(L == NULL)
  8. return false;//内存不足,分配失败
  9. L->next ==NULL;
  10. return true; //头节点之后暂时还没有节点
  11. }
  12. void test(){
  13. LinkList L;//声明一个指向单链表的指针
  14. InitList(L);//声明一个空链表
  15. }
  16. bool Empty(LinkList L){ntyptedf struct LNode{
  17. ElemType data;
  18. struct LNode *next;
  19. }LNode,*LinkList;//在第i个位置插入元素e(带头节点)
  20. while(p!=NULL&&j<i-1){//循环找到第i-1个节点
  21. p=p->next;//p指向下一个节点
  22. j++;
  23. }
  24. if(p==NULL)
  25. return false;//p值不合法
  26. LNode *s=(LNode *)malloc(sizeof(LNode));
  27. s->data=e;
  28. s->next=p->next;
  29. p->next=s;//将节点s连接到p
  30. return true;}
  31. if(L->next=NULL)
  32. return true;
  33. else
  34. return false;}//判断单链表是否为空(带头节点)

2.按位序插入(不带头节点)

  1. typedef struct LNode{
  2. ElemType data;
  3. struct LNode *next;
  4. }LNode,*LinkList;//初始化一个单链表
  5. bool ListInsert(LinkList &L,int i,ElemType e){
  6. if(i<1)
  7. return false;//插入到第一个位置时的操作有所不同
  8. if(i==1){
  9. LNode *s=(LNode *malloc(sizeof(LNode));
  10. s->data=e;
  11. s->next=L;
  12. L=s;//头指针指向新节点
  13. return true;
  14. }
  15. //i>1的情况与带头节点的相同,唯一的区别是j的初始值为1
  16. LNode *p;//指针P指向当前扫描到的节点
  17. int j=1;
  18. p=L; //L指向头节点,头节点是第0个节点,不存放数据
  19. //循环找到第i-1个节点
  20. while(p!=NULL&&j<i-1)
  21. p=p->next;//p指向下一个节点
  22. j++;
  23. }
  24. if(p=NULL)
  25. return false;//i的值不合法
  26. //在第i-1个节点后插入新节点
  27. LNode *s=(LNode *s)malloc(sizeof(LNode));//申请一个新节点
  28. s->data=e;
  29. s->next=p->next;
  30. p->next=s;
  31. return true;}

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

闽ICP备14008679号