使用java编写两个方法min和max来查找链表中的最大值和最小值,但输入列表是整数数组


  • 我想写两个方法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);
}
}

然后如果你在主中运行

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

如果你想用java8的方式来做,你也可以使用Arrays.stream(array_name).forEach(e->sList.add(e))

您为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);  
}  
}  

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

相关内容

  • 没有找到相关文章

最新更新