输入整数,以@结束,建立一个链表,然后从小到大依次输出链表的值
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data1;
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)
{
bool InitList(LinkList &L);
InitList(L);
LNode *s,*r=L;
int x;
scanf("%d",&x);
while(x!=9999)
{
s=(LNode *)malloc(sizeof(LNode));
s->data1=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
void swap(LNode *p,LNode *q)
{
int temp1,temp2;
temp1=p->data1;
p->data1=q->data1;
q->data1=temp1;
}
void sort(LinkList &L)
{
LNode *p,*q,*min;
p=L->next;
while(p->next!=NULL)
{
min=p;
q=p->next;
while(q!=NULL)
{
if(q->data1<min->data1)
min=q;
q=q->next;
}
swap(min,p);
p=p->next;
}
}
int main(void) {
bool InitList(LinkList &L);
LinkList list_TailInsert(LinkList &L);
void swap(LNode *p,LNode *q);
void sort(LinkList &L);
LinkList L;
InitList(L);
list_TailInsert(L);
sort(L);
LNode *p;
p=L->next;
while(p!=NULL)
{
printf("%d\n",p->data1);
p=p->next;
}
return 0;
}