now.next 还是now 无法向下遍历, 请问是因为什么。
#include <stdio.h>
#include <Windows.h>
#define 输出(a, ...) printf(a "\n",##__VA_ARGS__);
/*
* 3、(14分)某个单位员工工资如下定义struct Salary
{
char id[10];//员工编号char name[20];//员工姓名float wage;//员工工资struct Salary *next;}
(1输入该单位所有员工的工资信息;
(2)请计算输出该单位员工工资的中位数:(将员工工资进行升序排列,中位数是中间位置的员工工资,若n为偶数,
其中间两位的平均数为中位数)。
* */
struct Salary{
char id[10];//员工编号
char name[20];//员工姓名
float wage;//员工工资
struct Salary *next;
};
void input(struct Salary* all,int length)
{ scanf("%10s %20s %f",all->id,all->name,&all->wage);
输出("%s %s %f",all->id,all->name,all->wage);
length--;
for (; 0<length ; length--) {
all->next= (struct Salary*)malloc(sizeof(struct Salary));
all=all->next;
scanf("%10s %20s %f",all->id,all->name,&all->wage);
输出("%s %s %f",all->id,all->name,all->wage);
}
all->next=NULL;
}
/*
* sd fsd 45
as gr 12.5
as te 48.5
se te 8835.5
* */
void SalarySort(struct Salary* all,int length)
{
struct Salary temp;
struct Salary* now;
while (all->next!=NULL)
{
now=all;
now=now->next;
while (now->next!=NULL) {
if (now->wage < all->wage)
{
temp=*now;
*now =*all;
*all=temp;
} 输出("%f,%f",now->wage,all->wage);
输出("%s,%s",now->id,all->id);
now=now->next;//this step do not run;now.next=now maybe bug
}
输出("now end");
all=all->next;
}
}
void output(struct Salary* all)
{
while (all->next!=NULL) {
输出("%s %s %f",all->id,all->name,all->wage);
all=all->next;
} 输出("%s %s %f",all->id,all->name,all->wage);
}
void SlaryTest()
{
struct Salary *head= (struct Salary*)malloc(sizeof(struct Salary));
input(head,4);
SalarySort(head,4);
output(head);
}
int main()
{
SlaryTest();
}