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

Problem Description

输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。

Input

第一行输入整数个数N;
第二行输入N个无序的整数。

Output

依次输出有序链表的结点值。

Sample Input

6
33 6 22 9 44 5

Sample Output

5 6 9 22 33 44

Hint

不得使用数组!

 

#include
#include
#include
using namespace std;

typedef struct Node{
    int data;
    struct Node *next;
}node;

void create(node * &head,int m){
    node *p,*tail;
    head = new Node;
    head->next = NULL;
    tail = head;
    for(int i = 0 ; i < m ; i++){
        p = new Node;
        scanf("%d",&p->data);
        p->next = NULL;
        tail->next = p;
        tail = p;
    }
}

void sort(node * &head){
    node *cur,*p;
    int temp;
    for(cur = head->next;cur != NULL;cur = cur->next){
        for(p = cur->next;p != NULL;p = p->next){
            if(cur->data > p->data){
                temp = cur->data;
                cur->data = p->data;
                p->data = temp;
            }
        }
    }
}

void print(node * &head){
    node *p;
    p = head->next;
    while(p){
        if(p->next == NULL){
            printf("%d\n",p->data);
        }else{
            printf("%d ",p->data);
        }
        p = p->next;
    }
}

int main(){
    node *head;
    int n;
    scanf("%d",&n);
    create(head,n);
    sort(head);
    print(head);
    return 0;
}

 

你可能感兴趣的:(数据结构实验之链表六:有序链表的建立)