一、题目
建立一个单向链表,头指针是list,链表中每个结点包含姓名、基本工资信息,编写max_list函数查找链表中最高基本工资的职工信息。要求在主函数中建立单向链表(注:当输入基本工资为0时,表示输入结束。),然后调用max_list函数查找链表中最高基本工资的职工信息,最后输出查找结果。
二、程序清单
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct staff {
char name[10];//姓名
int wages;//工资
struct staff* next;//指向下一个结点的指针
};
staff* max_list(staff* list)
{
staff* p= list->next;//p指向首元结点
staff* q = NULL;
int max = p->wages;
while (p!= NULL)//指针判空
{
if (p->wages > max)//依次比较各员工工资高低
{
max = p->wages;
q = p;
}
p = p->next;//p指向下一个结点
}
return q;//返回最高基本工资的职工信息
}
void CreatList(staff* list)//初始化员工信息函数(尾插法)
{
staff* r = list;//定义尾指针
int n = 1;
while (1)
{
staff* p = (staff*)malloc(sizeof(staff));//生成新结点
printf("请输入第%d个员工的姓名、工资:", n);
scanf("%s %d", &p->name, &p->wages);//输入员工姓名及工资
n++;
r->next = p;//将结点插入表尾
if (p->wages != 0)//当输入基本工资为0时,表示输入结束
r = r->next;//将尾指针后移一位
else
break;
}
r->next = NULL;//尾结点的指针域为NULL
}
int main()
{
staff* list = (staff*)malloc(sizeof(staff));
CreatList(list);//调用初始化员工信息函数
printf("最高工资员工姓名:%s\n最高工资员工工资:%d", max_list(list)->name, max_list(list)->wages);
return 0;
}
三、运行结果