数据结构实验之链表六:有序链表的建立两种方法

数据结构实验之链表六:有序链表的建立

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");

}