当前位置:   article > 正文

C语言寻找链表中最大的值_查找链表中的最大值

查找链表中的最大值

该程序的原理就是,将链表中的所有值赋值到一个指针中然后将该指针整理为有序表,最后的结点为最大值

1、将以下代码作为该链表的信息储存包,方便为另一个指针分配内存

  1. struct LNode
  2. {
  3. int data;//*数据域
  4. struct LNode *next;//*指针域
  5. };
  6. struct number
  7. {//*信息储存包
  8. struct LNode *a0;//*用于储存链表
  9. int length;//*用于储存结点(头结点除外)数量
  10. };

2、寻求最大值的算法的代码如下

  1. int max(struct number a)//*寻求链表中最大值的算法
  2. {
  3. struct LNode *b;
  4. b=a.a0->next;
  5. int *c,d;
  6. c=(int*)malloc(a.length*sizeof(int));//*为这个指针分配内存
  7. for(d=0;d<a.length;d++)
  8. {
  9. c[d]=b->data;//*赋值
  10. b=b->next;//*指向下一个结点
  11. }
  12. for(;;)//*整理这个指针的信息
  13. {
  14. for(d=0;d<a.length;d++)
  15. {
  16. if(c[d]>c[d+1])//*判断是否大于后缀,如果是,则进行元素交换
  17. {
  18. int e;
  19. e=c[d];
  20. c[d]=c[d+1];
  21. c[d+1]=e;
  22. break;//*方便判断该指针是否为有序表
  23. }
  24. }
  25. if(d==a.length)//*如果该指针成为了有序表
  26. {
  27. break;
  28. }
  29. }
  30. return c[a.length-1];//*将链表中的最大值作为返回值
  31. }

3、重点强调

在创建该链表时必须将所有结点(头指针除外)数量确定,才能为那个指针分配内存

代码如下:

  1. struct LNode *a0()
  2. {
  3. struct LNode *a;//*创建结点
  4. a=(struct LNode*)malloc(sizeof(struct LNode));//*为该结点分配内存
  5. a->next=NULL;//*将该结点的后缀置空
  6. return a;//*返回该结点
  7. }
  8. struct number *a1()
  9. {
  10. struct LNode *a,*b;
  11. a=a0();//*将头节点初始化
  12. b=a;
  13. int c[]={2,454,6547,76,7,7,5,64,35,534,4,543,54,354,53};//*将要赋值到链表中的数组
  14. int d;
  15. for(d=0;d<sizeof(c)/sizeof(int);d++)//*将该数组的所有元素赋值到链表中
  16. {
  17. struct LNode *e;//*创建新结点
  18. e=a0();//*初始化该结点
  19. e->data=c[d];//*将元素赋值到新结点的数据域
  20. b->next=e;//* *b的下缀指向*e
  21. b=e;//*指向下一个结点
  22. }
  23. struct number *f;//*创建信息储存包
  24. f=(struct number*)malloc(sizeof(struct number));//*为信息储存包分配空间
  25. f->a0=a;//*将该链表储存到信息储存包
  26. f->length=sizeof(c)/sizeof(int);//*将链表的结点(头结点除外)数量储存在信息储存包
  27. return f;//*返回该信息储存包
  28. }

完整代码如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct LNode
  4. {
  5. int data;//*数据域
  6. struct LNode *next;//*指针域
  7. };
  8. struct number
  9. {//*信息储存包
  10. struct LNode *a0;//*用于储存链表
  11. int length;//*用于储存结点(头结点除外)数量
  12. };
  13. struct LNode *a0()
  14. {
  15. struct LNode *a;//*创建结点
  16. a=(struct LNode*)malloc(sizeof(struct LNode));//*为该结点分配内存
  17. a->next=NULL;//*将该结点的后缀置空
  18. return a;//*返回该结点
  19. }
  20. struct number *a1()
  21. {
  22. struct LNode *a,*b;
  23. a=a0();//*将头节点初始化
  24. b=a;
  25. int c[]={2,454,6547,76,7,7,5,64,35,534,4,543,54,354,53};//*将要赋值到链表中的数组
  26. int d;
  27. for(d=0;d<sizeof(c)/sizeof(int);d++)//*将该数组的所有元素赋值到链表中
  28. {
  29. struct LNode *e;//*创建新结点
  30. e=a0();//*初始化该结点
  31. e->data=c[d];//*将元素赋值到新结点的数据域
  32. b->next=e;//* *b的下缀指向*e
  33. b=e;//*指向下一个结点
  34. }
  35. struct number *f;//*创建信息储存包
  36. f=(struct number*)malloc(sizeof(struct number));//*为信息储存包分配空间
  37. f->a0=a;//*将该链表储存到信息储存包
  38. f->length=sizeof(c)/sizeof(int);//*将链表的结点(头结点除外)数量储存在信息储存包
  39. return f;//*返回该信息储存包
  40. }
  41. int max(struct number a)//*寻求链表中最大值的算法
  42. {
  43. struct LNode *b;
  44. b=a.a0->next;
  45. int *c,d;
  46. c=(int*)malloc(a.length*sizeof(int));//*为这个指针分配内存
  47. for(d=0;d<a.length;d++)
  48. {
  49. c[d]=b->data;//*赋值
  50. b=b->next;//*指向下一个结点
  51. }
  52. for(;;)//*整理这个指针的信息
  53. {
  54. for(d=0;d<a.length;d++)
  55. {
  56. if(c[d]>c[d+1])//*判断是否大于后缀,如果是,则进行元素交换
  57. {
  58. int e;
  59. e=c[d];
  60. c[d]=c[d+1];
  61. c[d+1]=e;
  62. break;//*方便判断该指针是否为有序表
  63. }
  64. }
  65. if(d==a.length)//*如果该指针成为了有序表
  66. {
  67. break;
  68. }
  69. }
  70. return c[a.length-1];//*将链表中的最大值作为返回值
  71. }
  72. main()
  73. {
  74. char aa[]="Math Dash的求链表最大值的程序";
  75. char ab[strlen(aa)+6];
  76. sprintf(ab,"title %s",aa);
  77. system(ab);
  78. puts(aa);
  79. struct number *a;//*创建信息储存包
  80. a=a1();//*为该信息储存包储存数据(分别为链表信息,除头结点的所有结点的数量)
  81. struct LNode *b;
  82. b=a->a0->next;
  83. printf("这是该链表\n");
  84. while(b)
  85. {
  86. printf("%d\n",b->data);
  87. b=b->next;
  88. }
  89. printf("\n该链表最大值为%d\n",max(*a));//*显示最大值
  90. system("pause");
  91. return 0;
  92. }

 程序运行结果如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/825785
推荐阅读
相关标签
  

闽ICP备14008679号