简体   繁体   English

使用java写两个方法min和max在链表中找到最大值和最小值但输入列表是整数数组

[英]Using java write two methods min and max to find maximum value and minimum value in linked list but the input list is array of integers

  • I want to write two methods min and max to find maximum value of a node and minimum value of a node in linked list.我想编写两个方法 min 和 max 来查找链表中节点的最大值和节点的最小值。
  • for example if a variable called abc stores { 1, 78, -9, 42 , 0, 14} then abc.min() should return -9 and abc.max() should return 78.例如,如果名为 abc 的变量存储 { 1, 78, -9, 42 , 0, 14} 则 abc.min() 应返回 -9,abc.max() 应返回 78。
  • If the list is empty it should return -1.如果列表为空,则应返回 -1。 Print the returned value.打印返回值。

    Please help me in this how I can compute max and min values in a linked list by inputting array of integers请帮助我如何通过输入整数数组来计算链表中的最大值和最小值

    ```package demo; public class MaximumMinimum { class Node{ int data; Node next; public Node(int data) { this.data = data; this.next = null; } } //Represent the head and tail of the singly linked list public Node head = null; public Node tail = null; //addNode() will add a new node to the list public void addNode(int data) { //Create a new node Node newNode = new Node(data); //Checks if the list is empty if(head == null) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //newNode will be added after tail such that tail's next will point to newNode tail.next = newNode; //newNode will become new tail of the list tail = newNode; } } //minNode() will find out the minimum value node in the list public void minNode() { Node current = head; int min; if(head == null) { System.out.println("List is empty"); } else { //Initializing min with head node data min = head.data; while(current != null){ //If current node's data is smaller than min //Then, replace value of min with current node's data if(min > current.data) { min = current.data; } current= current.next; } System.out.println("Minimum value node in the list: "+ min); } } //maxNode() will find out the maximum value node in the list public void maxNode() { Node current = head; int max; if(head == null) { System.out.println("List is empty"); } else { //Initializing max with head node data max = head.data; while(current != null){ //If current node's data is greater than max //Then, replace value of max with current node's data if(max < current.data) { max = current.data; } current = current.next; } System.out.println("Maximum value node in the list: "+ max); } } public static void main(String[] args) { MaximumMinimum sList = new MaximumMinimum(); //Adds data to the list sList.addNode(5); sList.addNode(8); sList.addNode(1); sList.addNode(6); //Display the minimum value node in the list sList.minNode(); *//Display the maximum value node in the list * sList.maxNode(); } } ```

Code you given is executing in correct manner.您给出的代码以正确的方式执行。

You can also use你也可以使用

MaximumMinimum sList = new MaximumMinimum(); 
List<Integer> list = new ArrayList<>();
Node head = sList.head;
while(head != null){
    list.add(head.data);
    head= head.next;
}
//no recommended if you want to design your own method    
System.out.println(list);
System.out.println(Collections.max(list));
System.out.println(Collections.min(list));

For inputting array of integers to用于输入整数数组

public void stores(int[] array)
{
    for(int element:array)
    {
        this.addNode(element);
    }
}

then if you run in main那么如果你在 main 中运行

 int[] elements = {1, 78, -9, 42 , 0, 14};
    sList.stores(elements);
    sList.maxNode(); //78
    sList.minNode();//-9

Also you can use Arrays.stream(array_name).forEach(e->sList.add(e)) if You want to do it in java 8 way.如果您想以 java 8 方式进行操作,您也可以使用Arrays.stream(array_name).forEach(e->sList.add(e))

You put a greater than sign for minNode() function and a lesser than for maxNode() .你把一个大于号为minNode()函数比较小maxNode()

public void minNode() {  
    Node current = head;  
    int min;  

    if(head == null) {  
        System.out.println("List is empty");  
    }  
    else {  
        //Initializing min with head node data  
        min = head.data;  

        while(current != null){  
             //If current node's data is smaller than min  
             //Then, replace value of min with current node's data  


            // Your error was here:

             min = Math.min(min, current.data); // You can simplify updating min to this.




             current= current.next;  
        }  
        System.out.println("Minimum value node in the list: "+ min);  
    }  
}  

And maxNode() becomes this:maxNode()变成了这样:

public void maxNode() {  
    Node current = head;  
    int max;  

    if(head == null) {  
        System.out.println("List is empty");  
    }  
    else {  
        //Initializing max with head node data  
        max = head.data;  

        while(current != null){  
             //If current node's data is greater than max  
             //Then, replace value of max with current node's data  


             // Your error was here:

             max = Math.max(max, current.data); // And updating max becomes this.




             current = current.next;  
        }  
        System.out.println("Maximum value node in the list: "+ max);  
    }  
}  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM