当前位置:   article > 正文

数据结构实验之链表六:有序链表的建立两种方法_建立一个有序链表(递增顺序)存放并输出。

建立一个有序链表(递增顺序)存放并输出。

数据结构实验之链表六:有序链表的建立

Description

输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。

Input

第一行输入整数个数N;

第二行输入N个无序的整数。

Output

依次输出有序链表的结点值。

Sample

Input

6

33 6 22 9 44 5

Output

5 6 9 22 33 44

Hint

不得使用数组!

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct a{
  4. int data;
  5. struct a *next;
  6. }LNode;
  7. LNode *A=(LNode*)malloc(sizeof(LNode));
  8. int n=0;
  9. void create (){
  10. int x=0;
  11. LNode *r=A;
  12. scanf("%d",&n);
  13. for(int i=0;i<n;i++){
  14. scanf("%d",&x);
  15. LNode *p=(LNode*)malloc(sizeof(LNode));
  16. p->data=x;p->next=NULL;
  17. r->next=p;r=r->next;
  18. }
  19. }
  20. void maopaosort(){
  21. int swap=0;
  22. for(int k=1;k<=n;k++){
  23. LNode *i=A->next,*j=i->next;
  24. while(i&&j){
  25. if(i->data>j->data){
  26. swap=i->data;
  27. i->data=j->data;
  28. j->data=swap;
  29. }
  30. i=i->next;j=j->next;
  31. }
  32. }
  33. } //外循环 几轮操作 内循环 对多少数据操作
  34. void xuanze(){
  35. int swap=0;
  36. LNode *i=A->next,*j=NULL;
  37. for(i;i;i=i->next){//以此选择第1.2.3....个为最小
  38. LNode *min=i;
  39. for(j=i->next;j;j=j->next)//找最小换值
  40. if(j->data<min->data)
  41. min=j;
  42. swap=min->data;
  43. min->data=i->data;
  44. i->data=swap;
  45. }
  46. }
  47. int main(){
  48. create();
  49. xuanze();
  50. LNode *p=A->next;
  51. //maopaosort();
  52. while(p){
  53. printf("%d ",p->data);
  54. p=p->next;
  55. }
  56. printf("\n");
  57. }
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号