当前位置:   article > 正文

【c语言篇】每日一题-pta-实验11-2-8 单链表结点删除_单链表删除结点c语言

单链表删除结点c语言

题目如下:

裁判测试程序样例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct ListNode {
  4. int data;
  5. struct ListNode *next;
  6. };
  7. struct ListNode *readlist();
  8. struct ListNode *deletem( struct ListNode *L, int m );
  9. void printlist( struct ListNode *L )
  10. {
  11. struct ListNode *p = L;
  12. while (p) {
  13. printf("%d ", p->data);
  14. p = p->next;
  15. }
  16. printf("\n");
  17. }
  18. int main()
  19. {
  20. int m;
  21. struct ListNode *L = readlist();
  22. scanf("%d", &m);
  23. L = deletem(L, m);
  24. printlist(L);
  25. return 0;
  26. }
  27. /* 你的代码将被嵌在这里 */

 

代码如下:

  1. struct ListNode *readlist()
  2. {
  3. struct ListNode *head, *p1, *p2;//创建指针变量
  4. int n = 0; //创建整型变量
  5. head = NULL; //初始化
  6. scanf("%d", &n); // 读取第一个整数
  7. while (n != -1) // 当整数不等于 -1 时
  8. {
  9. p1 = (struct ListNode *)malloc(sizeof(struct ListNode)); // 为新节点分配内存
  10. p1->data = n; // 将整数值存储到新节点的 data 字段
  11. if (head == NULL) // 如果链表为空
  12. {
  13. head = p1; // 设头指针为 p1
  14. p2 = p1; // 设 p2 为 p1
  15. }
  16. else
  17. {
  18. p2->next = p1; // 在链表尾部添加新节点
  19. p2 = p1; // 更新指针 p2 以指向新添加的节点
  20. }
  21. scanf("%d", &n); // 再次读取一个整数
  22. }
  23. p2->next = NULL; // 将链表尾部设置为 NULL
  24. return head; // 返回链表头指针
  25. }
  26. //删除数值等于m的节点
  27. struct ListNode *deletem(struct ListNode *L, int m)
  28. {
  29. //指针L指向链表头
  30. struct ListNode *p1, *p2 = NULL, *a;
  31. p1 = L;//初始化为链表头指针
  32. while (p1 != NULL)//p1用于遍历链表,p2用于跟踪遍历过程中p1的前一个结点
  33. {
  34. if (p1->data == m)
  35. {
  36. if (p2 == NULL)//即p1为链表的头结点
  37. {
  38. L = p1->next;//使头指针指向p1->next
  39. a = p1;//用a来释放
  40. p1 = p1->next;
  41. free(a);
  42. }
  43. else//p1 不是头节点
  44. {
  45. p2->next = p1->next;//将p2->next更新为p1->next以删除当前节点p1
  46. a = p1;
  47. p1 = p1->next;
  48. free(a);
  49. }
  50. }
  51. else
  52. {
  53. p2 = p1;
  54. p1 = p1->next;
  55. }
  56. }
  57. return L;
  58. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/557122
推荐阅读
相关标签
  

闽ICP备14008679号