2013-10-20 54 views
0

我知道ArrayList的size-1可以是尾部,而ArrayList.get(0)可以是头部,但是,我不确定ArrayList的自动调整大小特性是否会使LinkedList不是linkedList。是否可以使用数组列表来实现链表?

此外,我很困惑,如果它被实现为LinkedList,ArrayList的索引会发生什么。

+0

你能澄清你的问题吗? “通过数组列表实现链表”是什么意思? – templatetypedef

+0

当然可以!我的意思是“用数组列表实现链表”是指可以使用ArrayList从头创建链表吗? – csharpener

+0

你可以将'ArrayList'复制到'ArrayList'中,但是使用'ArrayList'作为'LinkedList'的数据结构是无意义的。 –

回答

0

则必须明确自己究竟是那些结构: (让我们谈谈为简单起见约单侧不循环列表)

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

所以,人们会通过创建节点,谁持有链接到该类型的其他节点创建这样的结构,而这一切都将被包裹在一些结构,讲代码:

Node类:

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的实现,它具有特定的描述和可能性,所以如果你“使用数组列表实现链接列表”,它不会是头部,尾部和索引链接列表(但坦率地说,我无法想象如何将一个链表与arraylist实现链表),夸张 - 这几乎是一样的问:“是否有可能实现整数与线程”

相关问题