数据结构实验之链表六:有序链表的建立
Description
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
Input
第一行输入整数个数N;
第二行输入N个无序的整数。
Output
依次输出有序链表的结点值。
Sample
Input
6 33 6 22 9 44 5
Output
5 6 9 22 33 44
Hint
不得使用数组!
代码:
#include<bits/stdc++.h>
using namespace std;
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode ,*Linklist;
void createlist(struct Lnode *l,int n)
{
struct Lnode *h = l;
Linklist q;
for(int i = 0; i < n; i++)
{
int a;
cin >> a;
struct Lnode *p = new Lnode;
p -> data = a;
p -> next = NULL;
if(h -> next == NULL)
{
h ->next = p;
}
else
{
q = h;
h = h -> next;
while(h!=NULL)
{
if(h -> data > a)
{
p->next = h;
q -> next = p;
break;
}
q = h;
h = h->next;
}
if(h == NULL)
{
q -> next = p;
}
h = l;
}
}
}
int main()
{
int n;
cin >> n;
struct Lnode *l = new Lnode;
l -> next = NULL;
createlist(l,n);
while(l->next)
{
cout << l->next->data;
l = l -> next;
if(l->next == NULL)
cout << endl;
else
{
cout << " ";
}
}
return 0;
}