题目:输入若干个职工信息(包括工号、姓名和工资),输入工号为0时输入结束,建立一个单向链表,再将工资低于5000的职工信息输出(链表的建立和信息输出分别定义函数实现)
题解:
//6、输入若干个职工信息(包括工号、姓名和工资),输入工号为0时输入结束,建立一个单向链表,再将工资低于5000的职工信息输出。(链表的建立和信息输出分别定义函数实现)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct st
{
long num;
char name[100];
int mon;
struct st *next;
};
int main()
{
st *head,*p,*r,*m;
while(true)
{
gets(p->name);//先输入姓名
if(strcmp(p->name,"0")==0)//判断姓名是否为0
{
return 0;
}
m=(st*)malloc(sizeof(st));//为m分配空间
if(m==NULL)//若申请失败
{
exit(0);
}
scanf("%ld",p->num);//输入信息
scanf("%d",p->mon);
r=head;
if(head==NULL)
{
r=head;
r=m;//前驱指针
//往后移动
}
else
{
m->next=r;
r=m;
}
if(p->mon<5000)//输出5000以下工资的员工信息
{
printf("%s",p->name);
printf("%ld",p->num);
printf("%d",p->mon);
printf("\n\n\n");
}
}
return 0;
}
本题较为简单,只涉及动态链表的创建和链表的遍历
今天也收获很多,一起ヾ(◍°∇°◍)ノ゙加油吧!!!!!