谭浩强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

  

原文地址:https://www.cnblogs.com/happyfei/p/10680154.html