zoukankan      html  css  js  c++  java
  • 谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define N sizeof(link)
     4 typedef struct stu
     5 {
     6     struct stu *next;
     7     int date;
     8 }link;
     9 void print(link*head)/*打印链表数据*/
    10 {
    11     link *p;
    12     p=head->next;
    13     if(p)
    14         do
    15         {
    16             printf("%d	",p->date);
    17             p=p->next;
    18         }while(p);
    19     printf("
    ");
    20 }
    21 link *creat(void)/*创建链表*/
    22 {
    23     link *head,*p,*s;
    24     head=(link*)malloc(N);
    25     head->next=p=(link*)malloc(N);
    26     printf("请输入数据输入‘0’结束创建链表:
    ");
    27     scanf("%d",&p->date);
    28     while(p->date)
    29     {
    30         p->next=(link*)malloc(N);
    31         s=p;
    32         p=p->next;
    33         printf("请输入数据输入‘0’结束创建链表:
    ");
    34         scanf("%d",&p->date);
    35     }
    36     s->next=NULL;
    37     return(head);
    38 }
    39 link *del(link *head,int m)/*删除指定数据节点*/
    40 {
    41     link *p,*last,*s;
    42     last=head;
    43     p=head->next;
    44     while(p)
    45     {
    46         if(p->date==m)
    47         {
    48             last->next=p->next;
    49             s=p;
    50             p=p->next;
    51             free(s);
    52         }
    53         else {
    54             last=last->next;
    55             p=p->next;
    56         }
    57     }
    58     return head;
    59 }
    60 link *insert(link *head,int m)/*在m数据结点后插入结点并输入数据*/
    61 {
    62     link *p,*pnew;
    63     for(p=head->next;p;p=p->next)
    64         if(p->date==m)
    65         {
    66             pnew=(link*)malloc(N);
    67             printf("请输入插入的数据:
    ");
    68             scanf("%d",&pnew->date);
    69             pnew->next=p->next;
    70             p->next=pnew;
    71         }
    72     printf("成功插入结点数据!
    ");
    73     return(head);
    74 }
    75 int main()
    76 {
    77     link*head;
    78     int n;
    79     head=creat();
    80     printf("打印未处理的数据:
    ");
    81     print(head);
    82     printf("
    输入要删除的数据结点:
    ");
    83     scanf("%d",&n);
    84     printf("打印删除后的链表数据:
    ");
    85     print(del(head,n));
    86     printf("
    输入在哪个链表数据后插入结点:
    ");
    87     scanf("%d",&n);
    88     printf("打印插入后的链表数据:
    ");
    89     print(insert(head,n));
    90     return 0;
    91 }

    测试数据:

    请输入数据输入‘0’结束创建链表:
    1
    请输入数据输入‘0’结束创建链表:
    2
    请输入数据输入‘0’结束创建链表:
    3
    请输入数据输入‘0’结束创建链表:
    4
    请输入数据输入‘0’结束创建链表:
    5
    请输入数据输入‘0’结束创建链表:
    6
    请输入数据输入‘0’结束创建链表:
    7
    请输入数据输入‘0’结束创建链表:
    8
    请输入数据输入‘0’结束创建链表:
    9
    请输入数据输入‘0’结束创建链表:
    10
    请输入数据输入‘0’结束创建链表:
    0
    打印未处理的数据:
    1       2       3       4       5       6       7       8       9       10
    
    输入要删除的数据结点:
    7
    打印删除后的链表数据:
    1       2       3       4       5       6       8       9       10
    
    输入在哪个链表数据后插入结点:
    6
    打印插入后的链表数据:
    请输入插入的数据:
    666666
    成功插入结点数据!
    1       2       3       4       5       6       666666  8       9       10
    Press any key to continue
    

      

  • 相关阅读:
    spring mvc 分页
    get/post时中文乱码问题的解决办法
    mysql-day01
    servler配置
    idea
    springMvc 核心配置
    ServletRequest面试题
    Servlet面试题
    Http面试题
    测试文件
  • 原文地址:https://www.cnblogs.com/happyfei/p/10680154.html
Copyright © 2011-2022 走看看