我想编写两种方法min和max,以在链表中找到节点的最大值和节点的最小值。
例如,如果一个名为abc的变量存储{1,78,-9,42,0,14},那么abc.min()应该返回-9,而abc.max()应该返回78。
如果列表为空,则应返回-1。打印返回的值。

请帮助我,如何通过输入整数数组来计算链表中的最大值和最小值

```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();
    }
  }  ```

最佳答案

您提供的代码以正确的方式执行。

您也可以使用

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));


用于输入整数数组

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


然后,如果您在main中运行

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



如果您想以Java 8方式进行操作,也可以使用Arrays.stream(array_name).forEach(e->sList.add(e))

08-05 20:51