数据结构实验之链表六:有序链表的建立
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
输入
第一行输入整数个数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;
}