c语言链表找姓,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#include
#include
#include
#include
typedef?struct?Node
{
int?data;
struct?Node?*next;
}AN;
int?data;
AN?*CreList(AN?*head);
AN?*InsList(AN?*head,int?data);
AN?*DelList(AN?*head,int?data);
void?find(int?value,AN?*head);
void?Des(AN?*head);
void?display(AN?*head);
void?main()
{
char?j='y';int?x;AN?*head=NULL;
printf("請創建一個鏈表,以0結束\n");head=CreList(head);
while(j=='y')
{
j=0;
printf("選擇操作:\n1.重新創建鏈表\n2.插入數據\n3.刪除數據\n4.查找某個數\n5.輸出鏈表\n6.刪除鏈表\n");
scanf("%d",&x);
switch(x)
{
case?1:
printf("請輸入鏈表,以0結束\n");head=CreList(head);break;
case?2:
printf("請插入一個數字\n");scanf("%d",&data);head=InsList(head,data);break;
case?3:
printf("刪除哪個數?\n");scanf("%d",&data);head=DelList(head,data);break;
case?4:
printf("查找那個數?\n");scanf("%d",&data);find(data,head);break;
case?5:
display(head);break;
case?6:
Des(head);break;
default?:0;
}
printf("continue?(y?or?n)\n");
while(j!='y'&&j!='n')
{
j=getch();
}
system("cls");
}
}
AN?*CreList(AN?*head)
{
AN?*p;
AN?*p1=NULL;
p=(AN?*)malloc(sizeof(AN));
int?x;
scanf("%d",&x);
p->data=x;
p->next=NULL;
head=p;p1=p;
while(x!=0)
{
p=(AN*)malloc(sizeof(AN));
scanf("%d",&x);
if(x==0){free(p);p=NULL;break;}
p->data=x;
p->next=NULL;
p1->next=p;
p1=p;
}
return?head;
}
void?display(AN?*head)
{
AN?*p=head;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
}
AN?*InsList(AN?*head,int?data)
{
AN?*w,*p=head,*p1=head;
if((w=(AN?*)malloc(sizeof(AN)))==NULL)
printf("內存空間申請失敗\n");
else
{
w->data=data;
w->next=NULL;
if(w->data<=p->data)
{w->next=head;return?w;}
else
{
while(w->data>p->data&&p->next!=NULL)
{
p1=p;
p=p->next;
}
if(w->data>p->data)
{
p1=p;
p=p->next;
}
p1->next=w;
w->next=p;
}
}
return?head;
}
AN?*DelList(AN?*head,int?data)
{
AN?*p=head,*p1=head;
while(p->data!=data)
{
p1=p;
p=p->next;
if(p==NULL)break;
}
if(p==NULL)?printf("表中無此數\n?");
else
if(head->data==p->data)
{
head=head->next;
free(p);
}
else
p1->next=p->next;
p=NULL;
free(p);
return?head;
}
void?find(int?value,AN?*head)
{
AN?*p=head;
int?count=0;
while(p->data!=value&&p->next!=NULL)
{
p=p->next;count++;
}
if(p->next==NULL&&p->data!=value)
printf("鏈表里無此數\n");
else
printf("是第%d個數\n",count+1);
}
void?Des(AN?*head)
{
AN?*p;
while(head->next!=NULL)
{
p=head;
head=head->next;
free(p);
}
free(head);
printf("鏈表成功刪除");
}
總結
以上是生活随笔為你收集整理的c语言链表找姓,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亏赚?急急急
- 下一篇: c语言通讯录打电话,C语言实现简易通讯录