数据结构 单链表插入删除操作(c语言实现)

深碍√TFBOYSˉ_ 2022-08-17 15:22 325阅读 0赞
  1. #include "stdlib.h"
  2. #include "stdio.h"
  3. typedef struct LNode{
  4. int data;
  5. struct LNode *next;
  6. }LNode,*LinkList;
  7. void Create_List(LinkList &L){
  8. int data;
  9. LinkList p,q;
  10. L=(LinkList)malloc(sizeof(LNode));
  11. L->next=NULL;
  12. q=L;
  13. scanf("%d",&data);
  14. while(data!=0){
  15. p=(LinkList)malloc(sizeof(LNode));
  16. p->data=data;
  17. p->next=q->next;
  18. q->next=p;
  19. q=p;
  20. scanf("%d",&data);
  21. }
  22. q=L;
  23. }
  24. void TranverseList(LinkList L){
  25. LinkList p;
  26. p=L->next;
  27. if(p==NULL){
  28. printf("null\n");
  29. return;
  30. }
  31. while(p!=NULL){
  32. printf("%d,",p->data);
  33. p=p->next;
  34. }
  35. printf("\n");
  36. }
  37. void ListDelet(LinkList &L,int delElem){
  38. LinkList p,temp;
  39. p=L;
  40. int tag=0;
  41. while(p->next!=NULL){
  42. if(p->next->data==delElem){
  43. temp=p;
  44. tag=1;
  45. break;
  46. }
  47. p=p->next;
  48. }
  49. if(tag==0){
  50. return ;
  51. }
  52. if(temp->next->next==NULL&&tag==1){
  53. temp->next=NULL;
  54. }else if(tag==1){
  55. temp->next=p->next->next;
  56. }
  57. }
  58. void Insert(LinkList &L,int elem){
  59. LinkList p;
  60. LinkList s;
  61. p=L;
  62. s=(LinkList)malloc(sizeof(LNode));
  63. s->data=elem;
  64. s->next=NULL;
  65. while(p->next!=NULL){
  66. if(p->next->data==elem) break;
  67. if(p->next->data>elem){
  68. s->next=p->next;
  69. p->next=s;
  70. break;
  71. }
  72. p=p->next;
  73. }
  74. if(p->next==NULL&&p->data<elem){
  75. p->next=s;
  76. }
  77. }
  78. int main(){
  79. LinkList L;
  80. Create_List(L);
  81. printf("插入前:");
  82. TranverseList(L);
  83. Insert(L,4);
  84. Insert(L,1);
  85. Insert(L,10);
  86. Insert(L,3);
  87. printf("插入4,1,10,3后:");
  88. TranverseList(L);
  89. ListDelet(L,5);
  90. ListDelet(L,1);
  91. ListDelet(L,10);
  92. ListDelet(L,8);
  93. printf("删除5,1,10,8后:");
  94. TranverseList(L);
  95. Insert(L,4);
  96. printf("插入4后:");
  97. TranverseList(L);
  98. ListDelet(L,2);
  99. printf("删除2后:");
  100. TranverseList(L);
  101. return 0;
  102. }

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读