Tag: 链表

使用O表示法在for循环中的LinkedList上调用get()的复杂性

我可以使用O()表示法来确定一小段代码的复杂性。 代码是: for (int i = 0; i < list.size(); i++) System.out.println(list.get(i)); 有问题的列表是一个链表。 对于我们的实际,我们得到了一个现成的LinkedList类,虽然我们必须编写自己的size()和get()方法。 让我对这个问题感到困惑的是在最终计算中要算什么。 问题是: 如果列表中有100个元素,它会进行多少次查找? 基于此,使用O()表示法计算程序的复杂性。 如果我只计算get()方法,它将平均进行n / 2次查找,从而产生O(n)的大O符号。 但是,for循环的每次迭代都需要重新计算size(),这涉及查找(以确定链表中有多少个节点)。 在计算此代码的复杂性时,是否应该考虑这一点? 或者计算大小不算作查找?

如何在java中从链表中找到中间值或节点?

我在链接list.how中有50个值来查找链表的中间值或节点? List list = new LinkedList(); for (int i = 0; i < 50; i++) { list.add(String.valueOf(i)); } int size = list.size(); int middle = (size / 2); System.out.println(list.get(middle).toString());… 我得到了这样的答案….但我的团队负责人说要以另一种方式找到答案? 有没有其他内置的方法来迭代链表?我试过……但我得到任何内置的方法来查找中间值…或者你可以任何人建议另一个逻辑来找到中间节点的值林克名单? 谢谢…….

链表实现java

我已经将链接列表实现为Java。 我创建了所有内容,但是我很难删除具有特定数据的特定节点。 它抛出一个NullPointerException 。 我相信,我得到一个NullPointerException因为下一个节点是null。 如果有人能指出我正确的方向,这将是伟大的。 输入 anything one two three 例外: Exception in thread “main” java.lang.NullPointerException at LinkedList.remove(LinkedList.java:28) at Main.main(Main.java:29) 类:链接列表类 public class LinkedList { // fields private Node head; private Node last; private int size = 0; // constructor, used when the class is first called public LinkedList() { head = last = […]

是否可以在忽略每个字符串中的前3个字符的同时对数组列表进行排序?

我试图弄清楚如何按字母顺序对列表进行排序,通常这很容易,但我需要忽略列表中每个字符串的前5个字符。 (它们是数字IDS) ArrayList tempList = new ArrayList(); for(String s : AddressBook){ tempList.add(s); Collections.sort(tempList ); } System.out.println(tempList);

如何在Java中正确定义链表数组?

我尝试在Java中定义一个链表列表,如下所示,它编译得很好,但它生成了2条警告消息。 LinkedList [] hashtable = new LinkedList[10]; warning: [rawtypes] found raw type: LinkedList LinkedList [] hashtable = new LinkedList[10]; ^ missing type arguments for generic class LinkedList where E is a type-variable: E extends Object declared in class LinkedList HashTable.java:13: warning: [unchecked] unchecked conversion LinkedList [] hashtable = new LinkedList[10]; ^ required: LinkedList[] found: LinkedList[] […]

java中的动态数组合并

我有两个像这样的数组。 String[] arr1 = { “1”, “2”, “3” }; String[] arr2 = { “111”, “222”, “333”, “444”, “555”, “666”, “777”, “888”, “999” }; 我想使用索引值的组合合并这两个数组。 我的输入将是两个整数值(2:3比例),就像这样 int firstArray = 2; //input value int secondArray = 4; //input value 合并后,所有值都将存储在单个列表中。 现在我需要像这样的输出。 1 2 111 222 333 444 3 1 555 666 777 888 2 3 999 111 […]

添加到链接列表的前面

我很困惑如何添加到链表的前面。 /** * data is added to the front of the list * @modifies this * @ffects 2–>4–>6 becomes data–>2–>4–>6 */ public void insert(E data) { if (front == null) front = new Node(data, null); else { Node temp = new Node(data, front); front = temp; } } 这创造了一个循环。 我该如何避免? 我有一个LinkedList类,它将前端节点保存在一个名为front的变量中。 我在这个LinkedList类中有一个Node类。 任何帮助,将不胜感激。 谢谢。

arraylist和linkedList之间的区别

可能重复: 何时使用LinkedList over ArrayList ? 何时在数组/数组列表中使用链表? 我应该何时使用arrayList,何时应该使用LinkedList? 我什么时候应该使用TreeSet , LinkedHashSet和HashSet ?

在Java中声明LinkedList

我总是学习当我们声明我们应该做的集合时, Interface ob = new Class() ,如果我想使用例如LinkedList我会做List ob = new LinkedList() ,但是我无法访问来自LinkedList的所有方法..是不是LinkedList ob = new LinkedList() 100%正确吗?

Java中的最大大小列表

在Java中拥有一个具有List的所有function但具有最大存储容量的数据结构对我来说很有用,并且在添加新数据时丢弃旧数据。 可以想象,在某些时候,我可能想要实现一个固定大小的队列,它保持数据的更一般顺序,并将旧数据丢弃在该顺序中最低,但这是未来的。 目前我正在实现它: public class FixedSizeList { private final int maxSize; private final LinkedList list = new LinkedList(); public FixedSizeQueue(int maxSize) { this.maxSize = maxSize maxSize ? list.remove() : null; } // add remaining methods… } 是否存在(a)满足我需求的现有数据结构,或者(b)实现此数据结构的更好方法?