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

来源:互联网 发布:淘宝唐人阁vip账号 编辑:程序博客网 时间:2024/04/29 22:26

Problem Description

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

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

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

6
33 6 22 9 44 5
Example Output

5 6 9 22 33 44
Hint

不得使用数组!
Author

#include<stdio.h>#include<stdlib.h>struct node{    int data;    struct node *next;};int main(){    int n, i, t;    struct node *p, *head, *tail, *q;    head = (struct node *) malloc (sizeof(struct node));    head -> next = NULL;    tail = head;    scanf("%d", &n);    for(i = 0; i < n; i++)    {        p = (struct node *) malloc (sizeof(struct node));        scanf("%d", &p -> data);        p -> next = NULL;        tail -> next = p;        tail = p;    }    p = head -> next ;    while(p != NULL)    {        for(q = p -> next; q != NULL; q = q -> next)        {            if(p -> data > q -> data)            {                t = p -> data;                p -> data = q -> data;                q -> data = t;            }        }        p = p -> next;    }    p = head -> next;    while(p != NULL)    {        if(p -> next == NULL)            printf("%d\n", p -> data);        else            printf("%d ", p -> data);        p = p -> next;    }    return 0;}

为什么链表可以直接交换元素呢?
想不明白。。。

问了问学长,交换的只是data这个值,而链表本身所有节点的地址都没有改变。

0 0
原创粉丝点击