昨天室友让我帮忙写道考研辅导题,这道题主要就是考链表的排序,由于没有时间限制,就直接暴力破解了,后面抽时间再总结一下链表的排序几种算法。
用C语言写这种数据结构的问题,最大的问题就是构造数据结构,这里我构造了一个单向链表存储员工信息,由于没有限制长度,这里我以‘-’作为输入结束的标志,在这里最难的点就是对于输入的理解(scanf\getchar())。
输入函数:
List ReadInput() /* 输入,带头结点 */
{
printf("请输入员工id,name,wage,以'-'结束:\n");
List L,P,t;
int i,f=0;
L = (List)malloc(sizeof(struct Salary));
P = L;
for(;;)
{
t = P;
P = (List)malloc(sizeof(struct Salary));
t->next = P;
if((P->id[0] = getchar()) == '\n') // 消除回车影响
i = 0;
else
i = 1;
for(; i < 9 ; i++) // 录入id,空格说明结束
{
if(P->id[0] == '-'){ // ‘-’为输入结束标志
f = 1;
break;
}
scanf("%c", &P->id[i]);
if(P->id[i] == ' ' || P->id[i] == '\n'){
P->id[i] = '\0';
break;
}
}
if(f == 1){ // 输入结束
printf("--------输入完成-------\n");
t->next = NULL;
free(P);
break;
}
for(i = 0; i < 19 ; i++) // 录入姓名,空格说明结束
{
scanf("%c", &P->name[i]);
if(P->name[i] == ' ' || P->name[i] == '\n' ){
P->name[i