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

来源:互联网 发布:图片提取文字软件 编辑:程序博客网 时间:2024/06/05 14:16

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

Problem Description

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

Input

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

Output

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

Example Input

633 6 22 9 44 5

Example Output

5 6 9 22 33 44
-----------------------------------------------------------------------------------------------
#include<stdio.h>#include<malloc.h>struct node{    int data;    struct node *next;};struct node *creat(int n){    struct node *head, *tail, *p;    head = (struct node*)malloc(sizeof(struct node));    head->next = NULL;    tail = head;    for(int i=0; i<n; i++){        p = (struct node*)malloc(sizeof(struct node));        scanf("%d", &p->data);        p->next = NULL;        tail->next = p;        tail = p;    }    return head;};void show(struct node *head){    struct node *p;    p = head->next;    while(p){        printf("%d%c", p->data, p->next==NULL?'\n':' ');        p = p->next;    }}void Rank(struct node *head, int n){    struct node *p, *q;    int t;    for(p = head->next; p != NULL; p = p->next){        for(q = p->next; q != NULL; q = q->next){            if(p->data > q->data){                t = p->data;                p->data = q->data;                q->data = t;            }        }    }};int main(){    int n;    struct node *head;    scanf("%d", &n);    head = creat(n);    Rank(head, n);    show(head);    return 0;}