我想编写两种方法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))
。