[英]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
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.