[C] 单链表的插入与删除操作 →→→→→进入此内容的聊天室

来自 , 2020-04-28, 写在 C, 查看 101 次.
URL http://www.code666.cn/view/5e6bd7a6
  1. //单链表的插入与删除
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. typedef struct node
  5. {
  6.         char data;
  7.         struct node *next;
  8. }LNode;
  9.  
  10. //创建单链表
  11. LNode *create()
  12. {
  13.         LNode *head,*p,*q;
  14.         char x;
  15.         head=(LNode*)malloc(sizeof(LNode));
  16.         head->next=NULL;
  17.         p=head;
  18.         q=p;
  19.         printf("请输入数据: \n");
  20.         scanf("%c",&x);
  21.         while(x!='\n')
  22.         {
  23.                 p=(LNode*)malloc(sizeof(LNode));
  24.                 p->data=x;
  25.                 p->next=NULL;
  26.                 q->next=p;
  27.                 q=p;
  28.                 scanf("%c",&x);
  29.         }
  30.         return head;
  31.  }
  32.  
  33. //1 输出单链表
  34. void print(LNode*head)
  35. {
  36.         LNode*p=head->next;
  37.        
  38.         while(p!=NULL)
  39.         {
  40.                 printf("%c->",p->data);
  41.                 p=p->next;
  42.          }
  43.          printf("\n");
  44.  }
  45.  
  46.  
  47. // 2在第i个位置插入结点x
  48. LNode *insert(LNode*head,int i,char x)
  49. {
  50.         LNode *p=head,*s;
  51.         int j=0;
  52.         while(p!=NULL&&j<i-1)
  53.         {
  54.                 p=p->next;
  55.                 j++;
  56.         }
  57.         if(p==NULL)
  58.                 printf("False\n");
  59.         else
  60.                 {
  61.                         s=(LNode*)malloc(sizeof(LNode));
  62.                         s->data=x;
  63.                         s->next=p->next;
  64.                         p->next=s;
  65.                 }
  66.         return head;           
  67.        
  68.  }
  69. // 3删除第i个结点
  70. LNode *del(LNode *head,int i)
  71. {
  72.         LNode *p=head,*s;
  73.         int j=0;
  74.         while(p!=NULL&&j<i-1)
  75.         {
  76.                 p=p->next;
  77.                 j++;
  78.         }
  79.        
  80.         if(p==NULL)
  81.                 printf("False\n");
  82.         else
  83.         {
  84.                 s=p->next;
  85.                 p->next=s->next;
  86.                 free(s);
  87.         }
  88.         return head;
  89. }
  90.  
  91. int main()
  92. {
  93.         LNode *h;
  94.         h=create();
  95.         print(h);
  96.        
  97.         int i;
  98.         char x;
  99.         printf("输入要插入的位置i和值x:(用逗号隔开)\n");
  100.         scanf("%d,%c",&i,&x);
  101.         insert(h,i,x);
  102.         print(h);
  103.         printf("输入要删除的结点的位置i:\n");
  104.         scanf("%d",&i);
  105.         del(h,i);
  106.         print(h);
  107.         return 0;
  108. }
  109.  

回复 "单链表的插入与删除操作"

这儿你可以回复上面这条便签

captcha