65,211
社区成员
发帖
与我相关
我的任务
分享#include "iostream"
#define NULL 0
#define NAME 1
#define TIME 2
#define N 3
#define TYPE struct JCB
using namespace std;
struct JCB
{
char name[N];
int time;
struct JCB *next;
};
void print(int ss[N])
{
for(int i=0;i <N;i++)
{
cout <<ss[i] <<" ";
}
}
/**
creat struct
**/
struct JCB*creat()
{
struct JCB *head,*current,*tail;
int n=0;
head=current=tail=NULL;
current=(TYPE*)malloc(sizeof(TYPE));
cout <<"input name,time" <<endl;
cin>>current->name>>current->time;
current->next=NULL;
while(current->time!=0)
{
if(n==0)
head=tail=current;
else
{
tail->next=current;
tail=current;
}
n++;
cout <<"input name,time" <<endl;
current=(TYPE*)malloc(sizeof(TYPE));
cin>>current->name>>current->time;
current->next=NULL;
}
free(current);
return (head);
}
void name_sort(struct JCB *p)
{
int i,j,k;
char *temp;
char *sal_name[N];
for(i=0;i <N;i++)
{
sal_name[i]=p->name;
p=p->next;
}
for(i=0;i <N;i++)
{
k=i;
for(j=i+1;j <N;j++)
if(strcmp(sal_name[k],sal_name[j])>0)
k=j;
if(k!=i)
{
temp=sal_name[i];
sal_name[i]=sal_name[k];
sal_name[k]=temp;
}
}
cout <<"name的排序:" <<endl;
for(i=0;i <N;i++)
{
cout <<sal_name[i];
}
for(i=0;i <N;i++)
{
cout <<sal_name[i] <<" ";
}
cout <<endl;
}
/**
从小到大排序
**/
void normol_sort(int s[N])
{
int i,j,temp;
for(i=0;i <N;i++)
for(j=0;j <N+1-i;j++)
{
if(s[j]>s[j+1])
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
print(s);
cout <<endl;
}
int main()
{
struct JCB *h;
struct JCB *p;
int sort_kind;
int a[N];
h=creat();
p=h;
cout <<"选择排序种类" <<endl;
cin>>sort_kind;
// <-----------------这个以后就开始有问题了!!!!!!!!!!
switch(sort_kind)
{
case NAME:
name_sort(p);
break;
case TIME:
for(int i=0;i <N;i++)
{
a[i]=p->time;
p=p->next;
}
for(i=0;i <N;i++)
{
cout <<a[i] <<endl;
}
normol_sort(a);
break;
}
return 0;
}