数据结构实验之链表六:有序链表的建立
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
不得使用数组!
#include <iostream>
#include <stdlib.h>
using namespace std;
struct node
{
int num;
struct node *next;
}*head,*tail;
int main()
{
int n;
cin>>n;
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
struct node *p,*q;
for(int i=0; i<n; ++i)
{
p=(struct node *)malloc(sizeof(struct node));
cin>>p->num;
p->next=NULL;
tail->next=p;
tail=p;
}
int t;
//这是排序算法
for(p=head->next;p;p=p->next)
{
for(q=p->next;q;q=q->next)
{
if(p->num>q->num)
{
t=p->num;p->num=q->num;q->num=t;
}
}
}
//类似于选择排序
p=head->next;
int f=1;
while(p)
{
if(f)
{
cout << p->num ;
f=0;
p=p->next;
}
else
{
cout <<' '<<p->num ;
p=p->next;
}
}
cout << endl;
return 0;
}