赞
踩
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
第一行输入整数个数N;
第二行输入N个无序的整数。
依次输出有序链表的结点值。
6
33 6 22 9 44 5
5 6 9 22 33 44
不得使用数组!
-
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct a{
- int data;
- struct a *next;
- }LNode;
- LNode *A=(LNode*)malloc(sizeof(LNode));
- int n=0;
- void create (){
- int x=0;
- LNode *r=A;
- scanf("%d",&n);
- for(int i=0;i<n;i++){
- scanf("%d",&x);
- LNode *p=(LNode*)malloc(sizeof(LNode));
- p->data=x;p->next=NULL;
- r->next=p;r=r->next;
- }
- }
- void maopaosort(){
- int swap=0;
-
- for(int k=1;k<=n;k++){
- LNode *i=A->next,*j=i->next;
- while(i&&j){
- if(i->data>j->data){
- swap=i->data;
- i->data=j->data;
- j->data=swap;
- }
- i=i->next;j=j->next;
- }
- }
- } //外循环 几轮操作 内循环 对多少数据操作
- void xuanze(){
- int swap=0;
- LNode *i=A->next,*j=NULL;
- for(i;i;i=i->next){//以此选择第1.2.3....个为最小
- LNode *min=i;
- for(j=i->next;j;j=j->next)//找最小换值
- if(j->data<min->data)
- min=j;
- swap=min->data;
- min->data=i->data;
- i->data=swap;
-
- }
- }
- int main(){
- create();
- xuanze();
- LNode *p=A->next;
- //maopaosort();
- while(p){
- printf("%d ",p->data);
- p=p->next;
- }
- printf("\n");
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。