代码实现:
//1.3.27 /** * return the value of the maximum key in the list * * @param list the linked list of Integer * * @return return the maximum key in the list */ public static int max(LinkedListlist) { if(list.first == null) return 0; int max = 0; for(int val : list) { if(val > max) max = val; } return max; } //1.3.28 /** * return the value of the maximum key in the list by recursion * * @param list the linked list of Integer * * @return return the maximum key in the list */ public static int maxByRecursion(LinkedList list) { if(list.first == null) return 0; int first = list.first.item;//first item list.first = list.first.next;//remove first item in the list int max = maxByRecursion(list);//calculate the maximum value of the new list if(first > max) return first; else return max; }
测试用例:
package com.qiusongde.linkedlist;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class Exercise1327 { public static void main(String[] args) { LinkedListlist = new LinkedList (); while(!StdIn.isEmpty()) { int val = StdIn.readInt(); list.insertAtBeginning(val); StdOut.println("insertAtBeginning success: " + val); StdOut.println(list); } int max = LinkedList.max(list); StdOut.println("The maximum key is:" + max); max = LinkedList.maxByRecursion(list); StdOut.println("The maximum key is:" + max + "(By Recursion)"); }}
测试数据1:
insertAtBeginning success: 10
10 insertAtBeginning success: 2525 10 insertAtBeginning success: 3030 25 10 insertAtBeginning success: 100100 30 25 10 insertAtBeginning success: 5151 100 30 25 10 insertAtBeginning success: 2626 51 100 30 25 10 insertAtBeginning success: 6969 26 51 100 30 25 10 insertAtBeginning success: 66 69 26 51 100 30 25 10 insertAtBeginning success: 3232 6 69 26 51 100 30 25 10 insertAtBeginning success: 7878 32 6 69 26 51 100 30 25 10 insertAtBeginning success: 9090 78 32 6 69 26 51 100 30 25 10 The maximum key is:100The maximum key is:100(By Recursion)
测试数据2:
insertAtBeginning success: 9090 insertAtBeginning success: 7878 90 The maximum key is:90The maximum key is:90(By Recursion)
测试数据3:
insertAtBeginning success: 9090 The maximum key is:90The maximum key is:90(By Recursion)
测试数据4(输入为空):
The maximum key is:0The maximum key is:0(By Recursion)