这是曾经面试的一道题目,面试结束后查看JAVA与数据结构的书,我仍然无法说出关于这个更多的描述。面试时我只答了2点:(应聘的是一个用JAVA进行多线程开发的职位,主要考察的是数据结构,算法与多线程等知识)LinkedList支持双向队列的方法,用java进行编程进行插入删除操作时比arraylist更有效;在java中可以实现栈的所有方法,所以需要时可以当成栈来用。
呵呵,数据结构等方面知识太薄落了,加上语言表达能力也有限的很。答出来之后感觉面试官对于答案不满意,虽然当场没说什么。
突发好奇之心,想看看各位朋友如何应对数据结构方面的描述题,遂发此帖。
路过的朋友请帮忙看看,如果你遇见这道题目你会如何回答,无所谓一定要牵涉到JAVA API,(及时你对linkedlist在java中是什么东西也不知道也没关系)从数据结构的角度阐述就行。

解决方案 »

  1.   

    链表可以理解为一个对象链,每个对象都包含若干个数据字段和一个指向下一个对象的引用。链表的插入删除效率比ArrayList高是因为它的插入删除操作不需要移动数据的位置,只要改变一下引用的指向就好了。但链表的查找速度比ArrayList明显慢多了,因为ArrayList可以通过下标直接定位到要目标位置上,链表却只能从头开始挨个查询。可以用二叉搜索树替代链表用二分查找法提高查找效率,同时保证高效的插入和删除。我差不多只能这么说。
      

  2.   

    在JAVA DOC当中是如此描述LinkedList的:
    List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。
    此类实现 Queue 接口,为 add、poll 等提供先进先出队列操作。其他堆栈和双端队列操作可以根据标准列表操作方便地进行再次强制转换。虽然它们可能比等效列表操作运行稍快,但是将其包括在这里主要是出于方便考虑。
    所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
    注意,此实现不是同步的。所以我支持zhangbaokun理解为链表的观点。谢谢2位,其他的朋友有什么想法的继续。
      

  3.   

    LinkedList
    1、用链表的结构实现了List
    2、支持双向顺序访问,但不支持随机访问(下标方式)
    3、适合于经常插入、删除的操作场合
      

  4.   

    LinkedList就是链表, 有什么好阐述的?
      

  5.   

    LinkedList是一种数据组织方式,加入链表的数据,通过指针指向前/后节点,根据指针的数量,可以分为单向链表和双向链表。
    对于外部访问者,链表通常包含三个指针:队头,队尾和当前节点指针。