单链表啲创建、计数打印、删除与插入操作,提供四轮删除与插入操作,gcc编译通过。
1 #includestdio.h>
2 #includestdlib.h>/*使用到其中啲malloc和exit函数*/
3 #define times 4/*用于循环次数啲控制*/
4
5 static int N=4;/*静态全局变量,用于控制单链表长度*/
6
7 typedef struct _person
8 {
9char name[12];
10int age;
11struct _person *next;
12 }stud;
13
14 stud *Create(int num)/*创建单链表啲函数,num为单链表de长度*/
15 {
16int i;
17stud *h,*p,*q;/* h为头指针,指向单链表de第一个节点*/
18h=(stud*)malloc(sizeof(stud));
19if(h!=NULL)
20{
21p=h;
22for(i=0;inum;i++)
23{
24q=(stud*)malloc(sizeof(stud));/* q为指向新建节点de指针*/
25if(q!=NULL)
26{
27printf("依次输入第%d个人de姓名和年龄:\n",i+1);
28scanf("%s%d",q->name,&q->age);
29q->next=NULL;/*创建新节点完毕*/
30p->next=q;
31p=q;
32}
33}
34}
35printf("\n");
36return(h);
37 }
38
39 stud *Delete(stud *person,int post)/*删除单链表指定位置节点啲函数*/
40 {
41int i;
42stud *cur,*pre;
43cur=person;
44
45if(0==post)/*如果输入啲值为0,则不删除任何节点*/
46{
47printf("\n注意:您决定不删除任何节点!!!\n\n");
48return(person);
49}
50else if(post>N||post0)/*如果输入啲值大于单链表长度或者小于0,程序结束*/
51{
52printf("输入有误,程序终止。\n");
53exit(1);
54}
55else
56{
57if(1==post)/*在单链表头部删除的情况*/
58{
59cur=cur->next;
60person->next=cur->next;
61free(cur);
62}
63else/*在其它位置删除的情况*/
64{
65for(i=2;ipos用u盘装xp系统t+1;i++)/*使pre成为要插入位置的上一位置的节点*/
66{
67cur=cur->next;
68pre=cur;
69}
70cur=cur->next;
71pre->next=cur->next;
72free(cur);
73}
74return(person);
75}
76 }
77
78 stud *Insert(stud *person,int post)/*在单链表指定位置插入新的节点的函数*/ 计算机
79 {
80int i;
81stud *cur,*pre,*node;
82
83if(post>N+1||post1)/*如果输入的值大于单链表长度加1或者小于1,程序结束*/
84{
85printf("输入错误,程序终止。\n");
86exit(1);
87}
88
89if(person!=NULL)
90{
91cur=person;
92node=(stud*)malloc(sizeof(stud));
93if(node!=NULL)
94{
95printf("请输入新人的姓名和年龄:\n");
96scanf("%s%d",node->name,&node->age);/*为新的节点输入数据内容*/
97
98if(1==post)
99{
100node->next=person->next;
101person->next=node;
102}
103else
104{
105for(i=2;ipost+2;i++)
106{
107pre=cur;
108cur=cur->next;
109}
110node->next=pre->next;
111pre->next=node;
112}
113}
114}
115printf("\n");
116return(person);
117 }
118
119 void Print(stud *person)
120 {
121int post=1;
122stud *cur;
123cur=person->next;
124printf("当前的节点信息如下所示:\n");
125while(cur!=NULL)
126{
127printf("第%d个人的姓名是:%s,年龄为:%d\n",post,cur->name,cur->age);
128cur=cur->next;
129post++;
130}
131N=--post;
132printf("当前单链表的长度是:%d\n\n",N);
133 }
134
135 int main()
136 {
137int number,post,i;
138stud *head;
139head=Create(N);
140Print(head);
141
142for(i=0;itimes;i++)
143{
144printf("请输u盘装系统下载入要删除的节点的位置:\n");
145scanf("%d",&number);
146Delete(head,number);
147Print(head);计算机基础知识
148
149printf("请输入要插入节点的位置(此位置是指预期插入成功后新节点在单链表中的位置):\n");
150scanf("%d",&post);
151Insert(head,post);
152Print(head);
153
154printf("\n注意:剩余输入轮数为:%d!!!!!\n\n",(times-(i+1)));
155}
156
157return 0;
158 }
怎样用u盘装xp系统 本文由www.upzxt.com整理!