【问题标题】:Is it possible to implement a linked list using an arraylist?是否可以使用 arraylist 实现链表?
【发布时间】:2013-10-20 21:34:29
【问题描述】:

我知道 ArrayList 的 size-1 可以是尾部,而 ArrayList.get(0) 可以是头部,但是我不确定 ArrayList 的自动调整大小特性是否会使 LinkedList 不是linkedList .

另外,如果 ArrayList 的索引被实现为 LinkedList,我很困惑。

【问题讨论】:

  • 你能澄清你的问题吗? “用数组列表实现链表”是什么意思?
  • 当然!我所说的“用数组列表实现链表”的意思是,是否可以使用 ArrayList 从头开始​​创建链表?
  • 您可以将ArrayList 复制到ArrayList,但使用ArrayList 作为LinkedList 的数据结构是没有意义的。
  • 我同意路易斯!然而,这是一项巩固人们对这些数据结构如何工作的理解的任务。我正在寻找更多可能性

标签: java arraylist linked-list implementation


【解决方案1】:

您必须自己清楚这些结构是什么: (为简单起见,我们谈谈单面未循环列表)

链表是数据元素的线性集合,称为节点,每个节点都指向下一个节点。它是由一组节点组成的数据结构,这些节点共同表示一个序列。

因此,人们可以通过创建节点来创建这样的结构,这些节点持有与该类型其他节点的链接,所有这些都将包装在某种结构中,即代码:

节点类:

class Node<T>{
         private Node next;
         private T data;
    //getters etc.
}

LinkedList 类:

class LinkedList<T>{
   private Node<T> head;
   // size, iterators, etc.
}

和数组列表有很大的不同,

数组列表是一种随机访问、可变大小的列表数据结构,允许添加或删除元素

这个维基百科引用不是很清楚,所以一般来说:它里面包含数组,类似于:

ArrayList 类:

class ArrayList<T>{
  private T[];
  //size, iterators, etc.
}

这个数组是用来保存数据/访问数据的。

所以它不是关于头、尾和索引,它是关于数据结构本身,甚至不是关于 Java 的实现,它有特定的描述和可能性,所以如果你“使用数组列表实现链表”它不会被链接list(但坦率地说,我无法想象如何用 arraylist 实现链表),夸大其词 - 这几乎与问:“是否可以用线程实现 Integer ”

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多