您的当前位置:首页>全部百科>百科问答详情
注:文章内容来源于网络,真实性有待确认,请自行甄别。

C语言编程问题20.建立一个链表,每个结点包括的成员为:职工号、

发表于:2024-10-24 00:00:00浏览:6次 分类: 电脑/网络-软件
问题描述:20. 建立一个链表,每个结点包括的成员为:职工号、工资。用一个creat() 来建立链表,用list()函数来输出数据。5个职工号为101,103,105,107,109。在此基础上,新增加一个职工的数据,按职工号的顺序插入链表,新插入的职工号为106。写一函数insert来插入新结点。然后再写一函数delete,用来删除一个结点。要求删除职工号为103的结点。打印出删除后的链表。
#include #include #include struct zg { char num[10]; int salary; struct zg *next; }; void main() { struct zg* head=NULL,*q; struct zg* creat(); void list(struct zg *); struct zg* insert(struct zg *h,struct zg *q); struct zg* del(struct zg *h,char*q); char snum[10]; head=creat(); printf("输出链表内容如下:\n"); list(head); q=(struct zg*)malloc(sizeof(struct zg)); printf("输入新的职工号和工资:"); scanf("%s",q->num); scanf("%d",&q->salary); q->next=NULL; head=insert(head,q); printf("插入结点后的链表内容如下:\n"); list(head); printf("输入被删除的职工号:"); scanf("%s",snum); head=del(head,snum); printf("删除结点后的链表内容如下:\n"); list(head); } struct zg* creat() { struct zg *h=NULL,*cur=NULL,*last=NULL; int count=0; while(1) { cur=(struct zg*)malloc(sizeof(struct zg)); printf("Input the %dth data:",count+1); scanf("%s",cur->num); scanf("%d",&cur->salary); cur->next=NULL; count++; if (strcmp(cur->num,"0")==0) //输入是否终止 { free(cur); break; } if(count==1) // 第1个结点吗? h=cur; else last->next=cur; last=cur; } return h; } void list(struct zg *h) { struct zg *cur; cur=h; while(cur!=NULL) { printf("%s %8d\n",cur->num,cur->salary); cur=cur->next;//指向下一个结点 } } struct zg* insert(struct zg *h,struct zg *q) { struct zg *p1,*p2; p1=p2=h; if(h==NULL) h=q;//链空时 else if(strcmp(q->num,h->num)<0) { //插入链首 q->next=h; h=q; } else { while(strcmp(q->num,p1->num)>0 && p1->next!=NULL) { p2=p1; p1=p1->next; } if( strcmp(q->num,p1->num)<=0) { //插入链中指点结点(p1)之前 q->next=p1; p2->next=q; } else { //插入链尾 p1->next=q; q->next=NULL; } } return h; } struct zg* del(struct zg *h,char *s) { struct zg *p1,*p2; p1=p2=h; //查找待删除结点的位置 while( (strcmp(s,p1->num)!=0)&& p1->next!=NULL) { p2=p1; p1=p2->next; } if(strcmp(s,p1->num)!=0) printf("没有找到该数据结点!\n"); else { if(h==p1) //删除第1个结点 { h=p1->next; free(p1); } else // 删除的结点不是首结点 { p2->next=p1->next; free(p1); } } return h; }

猜你喜欢

PhotoShopCS6
PhotoShop S6
发表于:2024-10-24 00:00:00 浏览:428 分类: 电脑/网络-软件
XLS文件用什么软件可以打开如题
如题
发表于:2024-10-24 00:00:00 浏览:101 分类: 电脑/网络-软件
哪儿有免费的视频剪辑工具?我机器中有许多AVI、RM、WMV等格
我机器中有许多AVI、RM、V等格式的视频文件,想找个能对文件进行部分剪辑,不需改变文件格式的工具。我使用Allok Video Splitter V1.4.8 汉化绿色版时改变了原存储格式,有点慢,且存为AVI时文件太大了,怎么与我机器中的AVI格式不一样了?
发表于:2024-10-24 00:00:00 浏览:99 分类: 电脑/网络-软件
如何更新浏览器的版本?
如何更新的版本?
发表于:2024-10-24 00:00:00 浏览:85 分类: 电脑/网络-软件
智能ABC输入法究竟如何使用?
智能ABC输入法究竟如何使用?
发表于:2024-10-24 00:00:00 浏览:60 分类: 电脑/网络-软件
请推荐:红宝石软件全能破解版下载网站(能稳定运行的)赠10分1、
1、能稳定运行。 2、能提供破解版且声誉较好的网站有哪些?
发表于:2024-10-24 00:00:00 浏览:55 分类: 电脑/网络-软件
BitstreamFontNavigator怎么用
Bstream Font Navigator怎么用
发表于:2024-10-24 00:00:00 浏览:52 分类: 电脑/网络-软件
怎么解决PS暂存已满
怎么解决PS暂存已满
发表于:2024-10-24 00:00:00 浏览:48 分类: 电脑/网络-软件
如何完全删除按键精灵用360删不了!
用360删不了!
发表于:2024-10-24 00:00:00 浏览:45 分类: 电脑/网络-软件
为什么360浏览器总是趁你不注意给你安装在电脑上?有时候360卫
有时候360卫士更新时,趁你直接按键“确定”就给装上不想要的。
发表于:2024-10-24 00:00:00 浏览:42 分类: 电脑/网络-软件