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

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

2016-07-29 09:50 267 查看


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




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<iostream>
using namespace std;
int n;
struct node
{
int  d;
node *next;
};
node *CreatList(int n)      //顺序建表
{
node *head=new node;
head->next=NULL;
node *tail=head;
for(int i=0; i<n; i++)
{
node *p=new node ;
cin>>p->d;
tail->next=p;
tail=p;
}
tail->next=NULL;
return head;
}
node *SortList(node *head)
{
for(node *p=head->next; p!=NULL; p=p->next)
for(node *q=p->next; q!=NULL; q=q->next)
{
if(p->d>q->d)
{
int t=p->d;
p->d=q->d;
q->d=t;
}
}
return head;
}
void PrintList(node *head)      //输出链表
{
node *p=head->next;
while(p!=NULL)
{
if(p->next==NULL)
cout<<p->d<<endl;
else
cout<<p->d<<" ";
p=p->next;
}
}
int main()
{
cin>>n;
node *head=NULL;
head=CreatList(n);
head=SortList(head);
PrintList(head);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: