繁体   English   中英

Java链表中最小的元素

[英]Smallest element in a Linked List in Java

我正在尝试创建10个无序整数的链接列表,输出列表,然后在列表中找到最小的元素并将其输出。 这就是我所拥有的。 它查找并输出一个元素,但不输出列表中的最小元素。 请帮忙。

import java.util.LinkedList;
import java.util.Random;

public class intergers
{

    public static void main(String[] args)
    {
        LinkedList <Integer> integers = new LinkedList<Integer>();

        //Generates an unordered list of ten integers.
        Random Doge = new Random();


        //Using a for loop.

        for(int count =0; count<10; count++)
        {
            int integer = Doge.nextInt(10);
            integers.add(integer);
        }
        if(integers.getLast() !=0)
        {
            integers.removeLast();
            integers.add(0);
        }

        System.out.println(integers); //Prints out that list.
        int Oedipus; 
        for(Oedipus =0; Oedipus <integers.size()-1; Oedipus++)
        {
            if(integers.get(Oedipus) < integers.get(Oedipus++))
            {
                //int smallest = integers.get(Oedipus);
                int smallest = integers.get(Oedipus);
            }

            if(integers.get(Oedipus) > integers.get(Oedipus++))
            {
                //int smallest = integers.get(Oedipus);
                //System.out.println("Smallest " + integers.get(Oedipus));
            }
            int smallest = integers.size();
        }
        int smallest = integers.get(Oedipus);
        System.out.println("The smallest element is: " + smallest);

    }
}

您是否尝试过使用Collections.min()方法?

这条线

System.out.println(integers); //Prints out that list.

不按照评论说的去做。 添加一个循环来遍历所有项目,并分别打印每个项目以查看列表中的内容。

您处理smallest ,例如此行

int smallest = integers.get(Oedipus);

之所以不正确,有两个原因:它们每次在嵌套作用域中都声明一个新的smallest ,并且它们不初始化smallest就开始。

要解决此问题,请在循环外部声明smallest ,然后使用列表的初始元素对其进行初始化,然后迭代从1开始的元素,并将其与smallest比较。 或者,将最小元素的索引而不是值存储在smallest 将其初始化为零,如果找到一个小于integers.get(smallest)的元素的元素,则将其设置为Oedipus

您只需要遍历列表并尝试查找最小元素。

int minInt = Integer.MAX_VALUE
for(int i = 0; i < Integers.size(), ++i){
    if(Integers.get(i) < minInt)
        minInt = Integers.get(i)
}

编辑:之所以我存储值而不是索引是因为对链表的随机访问很慢。 如果它是一个数组,那么随机访问将很快。

除了删除不必要的smallest声明之外,您还需要在每次使用int smallest = integers.size();进行迭代时,将smallest重置为LinkedList的大小int smallest = integers.size(); 码。 您应该在代码末尾删除此内容,并指出:

int smallest = integers.get(Oedipus);
System.out.println("The smallest element is: " + smallest);

这一切都是将smallest的元素重新定义为最后一个元素。

您的方法有些奇怪。 您还应该考虑变量的范围。 您的代码中的“最小”变量是不同的。

分析以下重新定义的函数

public static void main(String[] args) {
    // TODO code application logic here
    LinkedList <Integer> integers = new LinkedList<Integer>();

    //Generates an unordered list of ten integers.
    Random Doge = new Random();

    //Using a for loop.
    for(int count =0; count<10; count++)
    {
        int integer = Doge.nextInt(10);
        integers.add(integer);
    }

    int smallest = integers.get(0);
    System.out.println(integers); //Prints out that list.
    for( int Oedipus =1; Oedipus <integers.size()-1; Oedipus++)
    {
        if(integers.get(Oedipus) < smallest )
        {
            //int smallest = integers.get(Oedipus);
            smallest = integers.get(Oedipus);
        }
    }
    System.out.println("The smallest element is: " + smallest);     
}

暂无
暂无

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

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