当前位置:   article > 正文

递归求解单链表中的最大值

递归求解单链表中的最大值

 

描述

 

利用单链表表示一个整数序列,利用递归的方法求出单链表中整数的最大值。

输入

多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。

输出

对于每组数据分别输出一行,输出每个链表的最大值。

输入样例 1 

  1. 4
  2. 1 2 3 4
  3. 5
  4. -1 2 39 2 3
  5. 0

输出样例 1

  1. 4
  2. 39
  1. #include <iostream>
  2. #include<iomanip>
  3. using namespace std;
  4. #define MAXSIZE 10000
  5. typedef struct LNode
  6. {
  7. int data;
  8. struct LNode *next;
  9. }LNode,*LinkList;
  10. void InitList(LinkList &L)
  11. {
  12. L=new LNode;
  13. L->next=NULL;
  14. return;
  15. }
  16. void CreateList_R(LinkList &L,int n)
  17. {
  18. LinkList r,p;int i=0;
  19. L=new LNode;
  20. L->next=NULL;
  21. r=L;
  22. //int n;
  23. //cin>>n;
  24. while(1)
  25. {
  26. p=new LNode;
  27. cin>>p->data;
  28. p->next=NULL;
  29. r->next=p;
  30. r=p;
  31. i++;
  32. if(i==n) break;
  33. }
  34. return;
  35. }
  36. int ListLength(LinkList L)
  37. {
  38. LinkList p;
  39. p=L->next; //p指向第一个结点
  40. int i=0;
  41. while(p){//遍历单链表,统计结点数
  42. i++;
  43. cout<<p->data<<endl;
  44. p=p->next;
  45. }
  46. return i;
  47. }
  48. int Max(LinkList p)
  49. {
  50. int max;
  51. if(p->next==NULL)
  52. return p->data;
  53. else
  54. {
  55. max=Max(p->next);
  56. return p->data>=max?p->data:max;
  57. }
  58. }
  59. int main()
  60. {
  61. LinkList L;int n;
  62. InitList(L);
  63. while(1)
  64. {
  65. cin>>n;
  66. if(n==0)break;
  67. CreateList_R(L,n);
  68. cout<< Max(L->next)<<endl;
  69. }
  70. return 0;
  71. }

附:

>>数据结构实验OJ题库

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

闽ICP备14008679号