SDUT-2121_数据结构实验之链表六:有序链表的建立
2024-09-02 15:58:54
数据结构实验之链表六:有序链表的建立
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
不得使用数组!
链表的插入操作,找到链表中第一大于或等于x的节点,将x插入该节点之前就好,注意考虑链表中没有大于x的节点的时候。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}link;
link *newlink()
{
link *t;
t = (link*)malloc(sizeof(link));
t->next = NULL;
return t;
}
link *insert(link *head,int x)
{
link *p,*q,*r;
r = newlink();
r->data = x;
p = head;
while(p->next)
{
q = p->next;
if(q->data>=x)
{
r->next = p->next;
p->next = r;
return head;
}
p = p->next;
}
r->next = p->next;
p->next = r;
return head;
}
void show(link *head)
{
link *p;
p = head->next;
while(p)
{
if(p->next==NULL)
printf("%d\n",p->data);
else
printf("%d ",p->data);
p = p->next;
}
}
int main()
{
link *head;
int n,i,x;
scanf("%d",&n);
head = newlink();
for(i=0;i<n;i++)
{
scanf("%d",&x);
head = insert(head,x);
}
show(head);
return 0;
}
最新文章
- Git Learning - By reading ProGit
- 课程作业01:模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。
- 【转】Xcode概览:调试应用程序
- Python基础-day2
- 007商城项目:商品列表查询-需求分析,以及Spinmvc的访问知识
- [转] MovieClip转Bitmap方法
- iOS企业级开发
- 自己的php函数库
- DrawDib函数组的使用
- Linux同步时间命令ntpdate
- Poetize4 创世纪
- WinForm 控件不闪烁
- More is better(并差集)
- Django 基础知识
- jQuery(function(){...})与(function($){...})(jQuery)的“兄弟”情结
- RAC节点两边存储名字不一致导致的故障及相关延伸
- 使用javaMail实现简单邮件发送
- 如何给小学生讲清楚ECC椭圆曲线加密
- NoHttp封装--07 自定义异步任务框架
- 吴恩达课后作业学习1-week2-homework-logistic
热门文章
- 通过游戏学python 3.6 第一季 第一章 实例项目 猜数字游戏--核心代码 可复制直接使用 娱乐 可封装 函数
- leetcode 492-543 easy
- wpf绑定元素属性
- Django项目:CRM(客户关系管理系统)--03--02PerfectCRM创建ADMIN页面01
- GCC/GDB学习
- Java1.8新特性 - Stream流式算法
- 一眼看穿&#128064;JS基本概念
- echarts radar 一些会用到了的功能记录
- 一键制作启动elasticsearch和kibana启动的脚本可执行程序
- ubuntu更新问题