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

来源:互联网 发布:linux 启动apache2 编辑:程序博客网 时间:2024/05/15 23:25

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

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

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

Input

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

Output

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

Example Input

633 6 22 9 44 5

Example Output

5 6 9 22 33 44

Code realization

#include <stdio.h>#include <stdlib.h>typedef struct LNode{int data;struct LNode *next;}LNode;int num1 = 0,num2 = 0;LNode *input(int n){    LNode *head, *tail, *p;    head = (LNode*)malloc(sizeof(LNode));    tail = head;    for(int i=0;i<n;i++)    {        p = (LNode*)malloc(sizeof(LNode));        scanf("%d",&p->data);        tail->next = p;        tail = p;        tail->next = NULL;    }    return head;}void order(LNode *head){    LNode *p, *q;    int m;    p = head->next;    while(p)    {        q = p->next;        while(q)        {            if(q->data < p->data)            {                m= q->data;                q->data = p->data;                p->data = m;            }            q = q->next;        }        p = p->next;    }}void output(LNode *head){    LNode *p;    p = head->next;    while(p)    {        printf("%d",p->data);        p = p->next;        if(p)            printf(" ");        else            printf("\n");    }}int main(){    LNode *head;    int n;    scanf("%d",&n);    head = input(n);    order(head);    output(head);    return 0;}
1 0
原创粉丝点击