输入一组整形数据,从大到小存入有序列表中
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L)
{
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL) return false;
L->next=NULL; return true;
}
LinkList list_TailInsert(LinkList &L)
{
InitList(L);
int x;
LNode *s,*r=L;
while(scanf("%d",&x))
{
s=(LNode *)malloc(sizeof(LNode));
if(x==-1) break;
s->data=x;
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
void sort(LinkList L)
{
LNode *p,*q,*max;
for(p=L->next;p!=NULL;p=p->next)
{
max=p;
for(q=p->next;q!=NULL;q=q->next)
{
if(q->data>max->data)
max=q;
}
if(max!=p)
{
int temp=p->data;
p->data=max->data;
max->data=temp;
}
}
}
int main()
{
LinkList L;
list_TailInsert(L);
sort(L);
LNode *p;
for(p=L->next;p!=NULL;p=p->next)
printf("%d\t",p->data);
return 0;
}