数据结构实验之链表六:有序链表的建立
Description
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
Input
第一行输入整数个数N;
第二行输入N个无序的整数。
Output
依次输出有序链表的结点值。
Sample
Input
6
33 6 22 9 44 5
Output
5 6 9 22 33 44
Hint
不得使用数组!
#include<stdio.h>
#include<stdlib.h>
typedef struct a{
int data;
struct a *next;
}LNode;
LNode *A=(LNode*)malloc(sizeof(LNode));
int n=0;
void create (){
int x=0;
LNode *r=A;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&x);
LNode *p=(LNode*)malloc(sizeof(LNode));
p->data=x;p->next=NULL;
r->next=p;r=r->next;
}
}
void maopaosort(){
int swap=0;
for(int k=1;k<=n;k++){
LNode *i=A->next,*j=i->next;
while(i&&j){
if(i->data>j->data){
swap=i->data;
i->data=j->data;
j->data=swap;
}
i=i->next;j=j->next;
}
}
} //外循环 几轮操作 内循环 对多少数据操作
void xuanze(){
int swap=0;
LNode *i=A->next,*j=NULL;
for(i;i;i=i->next){//以此选择第1.2.3....个为最小
LNode *min=i;
for(j=i->next;j;j=j->next)//找最小换值
if(j->data<min->data)
min=j;
swap=min->data;
min->data=i->data;
i->data=swap;
}
}
int main(){
create();
xuanze();
LNode *p=A->next;
//maopaosort();
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}