1. 程式人生 > >遞迴求解單鏈表中的最大值

遞迴求解單鏈表中的最大值

 1 #include<iostream>
 2 using namespace std;
 3 
 4 typedef struct LNode {
 5     int data;
 6     LNode *next;
 7 }Lnode, *LinkList;
 8 
 9 bool InitList(LinkList &L)
10 {
11     L = new LNode;
12     L->next = NULL;
13     return true;
14 }
15 
16 void Create_List_R(LinkList &L, int
n) 17 { 18 LinkList r, p; 19 r = L; 20 while (n--) 21 { 22 p = new LNode; 23 cin >> p->data; 24 p->next = NULL; 25 r->next = p; 26 r = p; 27 } 28 } 29 30 int Find_Max(LinkList L)//遞迴求解單鏈表中的最大值 31 { 32 int max; 33 LinkList p = L;
34 if (p->next == NULL) 35 return p->data; 36 else { 37 max = Find_Max(p->next); 38 return p->data >= max ? p->data : max; 39 } 40 } 41 42 int main() 43 { 44 LinkList L; 45 int n; 46 while (cin >> n) 47 { 48 if (n == 0
) break; 49 InitList(L); 50 Create_List_R(L, n); 51 cout << Find_Max(L) << endl; 52 } 53 return 0; 54 }