题目描述
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
输入
第一行输入整数个数N;
第二行输入N个无序的整数。
第二行输入N个无序的整数。
输出
依次输出有序链表的结点值。
示例输入
6 33 6 22 9 44 5
示例输出
5 6 9 22 33 44
提示交换的时候用链表的数值,只交换数值即可
- #include<stdio.h>
- #include<stdlib.h>
- struct node
- {
- int date;
- struct node *next;
- };
- struct node *head=NULL,*p,*q,*tail,*now;
- int main()
- {
- int n,m;
- scanf("%d",&n);
- while(n--)
- {
- if((p=(struct node*)malloc(sizeof(struct node)*1))==NULL)
- return 1;
- scanf("%d",&p->date);
- p->next=NULL;
- if(head==NULL)
- {
- head=p;
- q=head;
- }
- else
- {
- q->next=p;
- q=q->next;
- }
- }
- q=head;
- while(q->next!=NULL)
- {
- p=q->next;
- while(p!=NULL)
- {
- if(q->date>p->date)
- {
- m=q->date;
- q->date=p->date;
- p->date=m;
- }
- p=p->next;
- }
- q=q->next;
- }
- q=head;
- while(q!=NULL)
- {
- printf("%d",q->date);
- if(q->next!=NULL)
- printf(" ");
- q=q->next;
- }
- printf("\n");
- return 0;
- }