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

简介: 数据结构实验之链表六:有序链表的建立 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。

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

Time Limit: 1000MS  Memory Limit: 65536KB

Problem Description

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

Input

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

Output

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

Example Input

6
33 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;
}
目录
相关文章
|
9天前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
35 4
|
10天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
10天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
9天前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
26 0
|
23天前
|
存储
[数据结构] -- 双向循环链表
[数据结构] -- 双向循环链表
18 0
|
6月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
5月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
5月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
5月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
48 2
|
6月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
50 1