• c链表结点的删除和添加


     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 typedef char datetype;/*定义新的数据类型名*/
     4 typedef struct node
     5 {
     6     datetype date;
     7     struct node *next;
     8 }listnode;
     9 typedef listnode *linklist;
    10 int delete(linklist h,int num)/*删除结点*/
    11 {
    12     linklist p=h;
    13     listnode *q=NULL;
    14     int i=num;
    15     int n=1;
    16     while(n<i)/*寻找删除位置*/
    17     {
    18         q=p;/*该结点和前后两个结点*/
    19         p=p->next;
    20         n++;
    21     }
    22     if(p==NULL)/*该结点不存在*/
    23         printf("No Found Node!");
    24     else
    25     {
    26         q->next=p->next;
    27         free(p);
    28     }
    29 }
    30 
    31 void output(linklist head)/*链表遍历*/
    32 {   
    33     linklist p=head;
    34     while(p!=NULL)
    35     {
    36         printf("%c",p->date);
    37         p=p->next;
    38     }
    39 }
    40 int rear_creat(linklist head,int index0,int m)/*插入新结点,链表头,结点位置,结点date*/
    41 {
    42     linklist k,g;
    43     int i=index0,n;
    44     k=head;
    45     n=1;
    46     while(n<i)/*寻找结点位置*/
    47     {
    48         n++;
    49         k=k->next;
    50     }
    51     g=(listnode *)malloc(sizeof(listnode));
    52     g->next=k->next;
    53     g->date=m;
    54     k->next=g;
    55 }
    56 int main()
    57 {
    58     char ch;
    59     int index,index0;
    60     char m;
    61     linklist head=NULL;
    62     listnode *p,*r;
    63     ch=getchar();
    64     while(ch!='
    ')
    65     {
    66         p=(listnode *)malloc(sizeof(listnode));
    67         p->date=ch;
    68         if(head==NULL)
    69             head=p;
    70         else
    71             r->next=p;
    72         r=p;
    73         ch=getchar();
    74     }
    75     output(head);
    76     printf("
    delete a node:
    ");
    77     scanf("%d",&index);
    78     if(index==1)
    79         head=head->next;
    80     else
    81         delete(head,index);
    82     output(head);
    83 
    84     printf("
    creat a node:
    ");
    85     scanf("%d%c",&index0,&m);
    86     rear_creat(head,index0,m);
    87     output(head);
    88     return 0;
    89 }
     1 #include<stdio.h>/*尾插法*/
     2 #include<stdlib.h>
     3 typedef char datetype;
     4 typedef struct node
     5 {
     6     datetype date;
     7     struct node *next;
     8 }listnode;
     9 
    10 typedef listnode *linklist;
    11 linklist r=NULL,head=NULL;
    12 
    13 void rear_creat(datetype ch)
    14 {
    15     linklist p=NULL;
    16     p=(listnode *)malloc(sizeof(listnode));
    17     p->date=ch;
    18     if(head==NULL)
    19     {
    20         head=p;
    21     }
    22     else
    23     {
    24         r->next=p;
    25     }
    26     r=p;
    27 }
    28 void output(linklist head)
    29 {
    30     while(head!=NULL)
    31     {
    32         printf("%c ",head->date);
    33         head=head->next;
    34     }
    35 
    36 }
    37 void insert_rear(int index,int num)
    38 {
    39     listnode *p=NULL,*u;
    40     u=head;
    41     int n=1;
    42     p=(listnode *)malloc(sizeof(listnode));
    43     p->date=index;
    44     while(num>n)
    45     {
    46         u=u->next;
    47         n++;
    48     }
    49     p->next=u->next;
    50     u->next=p;
    51 }
    52 void delete(int num)
    53 {
    54     int n=1;
    55     linklist p=head,q;
    56     while(num>n)
    57     {
    58         n++;
    59         q=p;
    60         p=p->next;    
    61     }
    62     q->next=p->next;
    63 }
    64 
    65 int main()
    66 {
    67     datetype index,ch;
    68     int num;
    69     ch=getchar();
    70     while(ch!='
    ')
    71     {
    72         rear_creat(ch);
    73         ch=getchar();
    74     }
    75     output(head);
    76     scanf("%c%d",&index,&num);
    77     insert_rear(index,num);
    78     output(head);
    79     scanf("%d",&num);
    80     delete(num);
    81     output(head);
    82 }
  • 相关阅读:
    [Erlang05]gen_server怎么去写eunit?
    [Erlang04]为什么有了rpc还有net_kernel:connect/1?
    [Erlang03]Erlang有哪些好用的静态分析工具?
    [SIP01]SIP Header Fields里面各字段用途
    [SIP00]SIP 概念总结
    [Erlang00]:gen_server:reply/2
    Makefile教程
    Linux 环境下开发 STM32
    Ubuntu 18.04 + ROS Melodic + TurtleBot3仿真
    Ubuntu系统鼠标不能点击
  • 原文地址:https://www.cnblogs.com/a1225234/p/4453175.html
Copyright © 2020-2023  润新知