构造一个链表:该链表包含两个整数,将所有结点按照第一个整数从小到大排序,如第一个整数相同,则按照第二个整数从小到大排序
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data1,data2;
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,y;
scanf("%d %d",&x,&y);
while(x!=9999)
{
s=(LNode *)malloc(sizeof(LNode));
s->data1=x;
s->data2=y;
r->next=s;
r=s;
scanf("%d %d",&x,&y);
}
r->next=NULL;
return L;
}
void swap(LNode *p,LNode *q)
{
int temp1,temp2;
temp1=p->data1;
p->data1=q->data1;
q->data1=temp1;
temp2=p->data2;
p->data2=q->data2;
q->data2=temp2;
}
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;
if(q->data1==min->data1&&q->data2<min->data2)
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 %d\n",p->data1,p->data2);
p=p->next;
}
return 0;
}