数据结构实验之链表六:有序链表的建立
2016-05-07 16:43
423 查看
数据结构实验之链表六:有序链表的建立
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
输入
第一行输入整数个数N;第二行输入N个无序的整数。
输出
依次输出有序链表的结点值。
示例输入
6 33 6 22 9 44 5
示例输出
5 6 9 22 33 44
提示
不得使用数组!#include<stdio.h> #include<stdlib.h> typedef struct node { int data; struct node *next; }Node; Node *creatList(int n)//顺序建立链表 { Node *head,*tail,*p; int i; head=(Node *)malloc(sizeof(Node )); head->next=NULL; tail=head; for(i=0;i<n;i++) { p=(Node *)malloc(sizeof(Node )); scanf("%d",&p->data); p->next=NULL; tail->next=p; tail=p; } return head; } Node *OrderlyList(Node *head)//排序,对数据的交换 节点本身没动 { Node *p,*q,*t; p=head->next; t=(Node *)malloc(sizeof(Node )); while(p) { q=p->next; while(q) { if(p->data>q->data) { t->data=q->data; q->data=p->data; p->data=t->data; q=q->next; } else { q=q->next; } } p=p->next; } return head; } int main() { int n; Node *head,*s; scanf("%d",&n); head=OrderlyList(creatList(n)); s=head->next; while(s) { if(s->next==NULL) printf("%d\n",s->data); else printf("%d ",s->data); s=s->next; } }
相关文章推荐
- 数据结构--堆的实现之深入分析
- 数据结构 算法 笔记1 概览
- 最大子列和问题
- 数据结构总结文
- 数据结构-队列的顺序存储(循环队列)
- 数据结构(树链剖分):COGS 2109. [NOIP2015] 运输计划
- 数据结构(树链剖分,堆):HNOI 2016 network
- 剖析Java中HashMap数据结构的源码及其性能优化
- Java千百问_06数据结构(009)_void是什么
- Java千百问_06数据结构(008)_null属于哪种数据类型
- 单向链表结点删除问题
- Java千百问_06数据结构(007)_String属于基本数据类型吗
- 二叉树
- 栈、队列、树、字符串的存储结构
- Java集合-HashMap数据结构详解
- 数据结构--绪论自测题
- 队列的顺序存储结构和链式存储结构
- 数据结构基础知识
- 栈及栈的链式存储结构(栈链)
- 数据结构_线性表_链式存储_单向循环链表的基本操作