zoukankan      html  css  js  c++  java
  • 算法(Algorithms)第4版 练习 1.3.27 1.3.28

    代码实现:

        //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(LinkedList<Integer> list) {
            
            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<Integer> 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) {
            
            LinkedList<Integer> list = new LinkedList<Integer>();
            
            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: 25
    25 10
    insertAtBeginning success: 30
    30 25 10
    insertAtBeginning success: 100
    100 30 25 10
    insertAtBeginning success: 51
    51 100 30 25 10
    insertAtBeginning success: 26
    26 51 100 30 25 10
    insertAtBeginning success: 69
    69 26 51 100 30 25 10
    insertAtBeginning success: 6
    6 69 26 51 100 30 25 10
    insertAtBeginning success: 32
    32 6 69 26 51 100 30 25 10
    insertAtBeginning success: 78
    78 32 6 69 26 51 100 30 25 10
    insertAtBeginning success: 90
    90 78 32 6 69 26 51 100 30 25 10
    The maximum key is:100
    The maximum key is:100(By Recursion)

    测试数据2:

    insertAtBeginning success: 90
    90 
    insertAtBeginning success: 78
    78 90 
    The maximum key is:90
    The maximum key is:90(By Recursion)

    测试数据3:

    insertAtBeginning success: 90
    90 
    The maximum key is:90
    The maximum key is:90(By Recursion)

    测试数据4(输入为空):

    The maximum key is:0
    The maximum key is:0(By Recursion)
  • 相关阅读:
    Java中的 多线程编程
    Python中的字典详解
    Python中的数据类型
    Python中的字符串操作总结(Python3.6.1版本)
    R语言绘制沈阳地铁线路图
    HIVE中的order by操作
    Hive中order by,sort by,distribute by,cluster by的区别
    HDFS shell命令
    HDFS入门
    Bootstrap_Datatable Ajax请求两次问题的解决
  • 原文地址:https://www.cnblogs.com/songdechiu/p/6512096.html
Copyright © 2011-2022 走看看