当前位置:   article > 正文

实现单链表功能_编写一个单链表的类模板link,并实现其主要操作 delete 和 insert.编写一个函数模

编写一个单链表的类模板link,并实现其主要操作 delete 和 insert.编写一个函数模
  1. 用尾插法建立一个单链表,实现对单链表节点的删除、改变其数据域、查看所有的链表节点的数据域。

要求:尾插法建立、节点的删除、改变节点数据域、查看所有节点的数据域。这四个功能分别用四个函数来实现。主函数里只定义链表的头指针。

初次实践

  1. #include <stdio.h>>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #define ElemType int
  5. typedef struct LNode
  6. {
  7. ElemType Data;
  8. struct LNode *Next;
  9. }LNode,*LinkList;
  10. void PrintList(LinkList L)
  11. {
  12. LinkList p;
  13. p = L->Next;
  14. printf("链表元素如下:\n");
  15. while(p!=NULL)
  16. {
  17. printf("%d ",p->Data);
  18. p = p->Next;
  19. }
  20. printf("\n");
  21. }
  22. LinkList CreateList_Tail(LinkList L)
  23. {
  24. int x;
  25. L = (LNode*)malloc(sizeof(LNode));
  26. LNode*s,*r = L;
  27. scanf("%d",&x);
  28. while(x!=9999)
  29. {
  30. s = (LNode*)malloc(sizeof(LNode));
  31. s->Data = x;
  32. r->Next = s;
  33. r = s;
  34. scanf("%d ",&x);
  35. }
  36. r -> Next = NULL;
  37. return L;
  38. }
  39. LinkList del_num(LinkList L,int target)
  40. {
  41. if(L->Next ==NULL)
  42. {
  43. printf("该链表为空!\n");
  44. return L;
  45. }
  46. if(L->Next->Data ==target )
  47. {
  48. L->Next =L->Next ->Next;
  49. return L;
  50. }
  51. LNode *pre = L;
  52. LNode *cur = L->Next ;
  53. while(cur!=NULL&&cur->Data !=target)
  54. {
  55. pre = cur;
  56. cur = cur->Next;
  57. }
  58. if(cur!=NULL)
  59. {
  60. pre->Next = cur->Next ;
  61. free(cur);
  62. }
  63. return L;
  64. }
  65. LinkList update(LinkList L,int add,int newElem)
  66. {
  67. int i = 0;
  68. LNode *temp = L;
  69. temp = temp->Next ;
  70. for(i=0;i<add;i++)
  71. {
  72. temp = temp->Next;
  73. }
  74. temp->Data = newElem;
  75. return L;
  76. }
  77. int main()
  78. {
  79. LinkList L;
  80. int num;
  81. int add;
  82. int newelem;
  83. printf("尾插法建立单链表\n");
  84. L = CreateList_Tail(L);
  85. PrintList(L);
  86. printf("输入要删除的数:\n");
  87. scanf("%d",&num);
  88. LinkList *new_L;
  89. new_L = del_num(L,num);
  90. PrintList(new_L);
  91. printf("输入要修改的数");
  92. scanf("%d %d",&add,&newelem);
  93. L = update(L,add,newelem);
  94. PrintList(L);
  95. return 0;
  96. }

 

 

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

闽ICP备14008679号