数据结构实验之链表六:有序链表的建立
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 <string.h> #include <iostream> #include <iomanip> #include <string> #include <algorithm> using namespace std; struct node { int data; struct node *next; }; int main() { int n; int i, j; cin>>n; struct node *head, *p, *q, *w; head=new struct node; head->next=NULL; int dd; int len=0; int ff; while(n--) { cin>>dd; p=new struct node; p->data = dd; p->next = NULL; if(head->next==NULL) { head->next=p; len++; } else { q=head; w=head->next; ff=0; for(i=0; i<len; i++) { if(w->data > dd) { p->next = w; q->next = p; ff=1; //len++; break; } else { q=q->next; w=w->next; } } if(ff==0) { q->next=p; } len++; } } w=head->next; for(j=0; j<len; j++) { if(j==0) cout<<w->data; else cout<<" "<<w->data; w=w->next; } cout<<endl; return 0; }