当前位置:   article > 正文

在带头结点的单链表中删除所有值为x的结点_在带头结点的单链表l中,删除所有值为x的结点

在带头结点的单链表l中,删除所有值为x的结点

个人代码如下所示,欢迎大佬指正。

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct LNode
  4. {
  5. int data;
  6. struct LNode* next;
  7. }Node,*Link;
  8. //删除值为x的结点
  9. void Delete(Link& link, int x)
  10. {
  11. Node* p = link,*q;
  12. while (p->next!=NULL)
  13. {
  14. if (p->next->data == x)
  15. {
  16. q = p->next;//保存待删除的结点p
  17. p->next = q->next;//将结点p从链表中拿出去
  18. free(q);
  19. }
  20. else
  21. p = p->next;//否则直接检查下一个结点
  22. }
  23. }
  24. //遍历并输出每一个结点
  25. void PrintLink(Link link)
  26. {
  27. Node* p = link;
  28. while (p->next!=NULL)
  29. {
  30. printf("%d ", p->next->data);
  31. p = p->next;
  32. }
  33. }
  34. int main()
  35. {
  36. Link link = (Link)malloc(sizeof(Node));
  37. link->next = NULL;
  38. Node* p = link,*s;
  39. int x;
  40. scanf("%d", &x);
  41. while (x < 9999)//输入数字大于9999便停止
  42. {
  43. s = (Node*)malloc(sizeof(Node));
  44. s->data = x;
  45. p->next = s;
  46. p = s;
  47. scanf("%d", &x);
  48. }
  49. p->next = NULL;//修改最后一个结点的next指针
  50. Delete(link, 5);
  51. PrintLink(link);
  52. return 0;
  53. }

 

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

闽ICP备14008679号