您的位置:首页 > 理论基础 > 数据结构算法

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

2017-09-29 14:55 288 查看

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

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


Hint

不得使用数组! 
#include <bits/stdc++.h>
using namespace std;

typedef struct node
{
int date;
struct node *next;
}Lnode;

Lnode *creat(int n)//建表 排序
{
Lnode *head, *p, *q, *r;
head = new node;
head ->next = NULL;
p = new node;
p ->next = NULL;
cin >> p->date;
head -> next = p;       //输入首元素用于后面元素的判断
for(int i = 1; i < n; i++)
{
bool flag = 1;
p = new node;
p ->next = NULL;
r = head;
q = head->next;
cin >> p ->date;
while(q->next)            //除最后一个外,判值
{
if(p->date <= q -> date)
{
r -> next = p;
p -> next = q;
flag = 0;break;
}
else
{
r = r -> next;
q = q -> next;
}
}
if(flag)          //对最后一个判断
{
if(p->date>=q->date)
{
q -> next = p;
}
else
{
r -> next = p;
p -> next = q;
}
}
}
return head;
}

void output(Lnode *head)//输出
{
Lnode *q;
cout << head -> next -> date;
q = head->next;
while(q->next)
{
q = q->next;
cout << " " << q->date;
}
cout << endl;
}

int main()
{
int n;
Lnode *head;
cin >> n;
head = creat(n);//建表 排序
output(head);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: