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

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

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 <stdio.h>
#include <stdlib.h>

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

int main()
{
    struct node *head, *p, *q, *r;
    head = (struct node *)malloc(sizeof(struct node));
    head->next = NULL;
    int i, n;
    scanf("%d",&n);
    p = (struct node *)malloc(sizeof(struct node));
    scanf("%d",&p->data);
    p->next = NULL;
    head->next = p;
    for(i=1; i<n; i++){
        p = (struct node *)malloc(sizeof(struct node));
        scanf("%d",&p->data);
        p->next = NULL;
        q = head;
        r = q->next;
        while(r&&r->data<p->data){
           q = q->next;
           r = q->next;
        }
        p->next = q->next;
        q->next = p;
    }

    p = head->next;
    while(p->next)
    {
        printf("%d ",p->data);
        p = p->next;
    } printf("%d\n",p->data);
    return 0;
}
           


posted @ 2018-02-26 10:18  Gaojinman  阅读(139)  评论(0)    收藏  举报