Java方法实现中的链接列表

时间:2014-03-22 17:29:26

标签: java linked-list

现在我准备编码面试,我有一个关于Java链表的问题。你能告诉我一些可靠的资料来源,我可以从中学习和练习基本的链表方法。我喜欢这个:www.cs.cmu.edu/~adamchik/15-121/lectures/Linked%20Lists/code/LinkedList.java但我对一些方法实现感到困惑。例如,方法E get(int pos)返回NOT节点,但数据E包含在pos位置的节点中。虽然这里http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/java/util/LinkedList.java#LinkedList方法Node节点(int index)返回该位置的节点(而不是其中包含的数据)。我应该遵循哪种实施方案?

1 个答案:

答案 0 :(得分:1)

数据结构是一个非常概念化和基于上下文的学科。每种数据结构存在的各种实现都基于数据结构的要求和范围 甚至可以争辩说LinkedList Collection API的实现是错误的,因为如果多个线程同时处理它,它就不能很好地工作。然后需要从synchronizedList类中创建Collections,或者至少需要使用适用于多个线程的实现。

遵循最低限度的可行惯例,因为面试官不会只问你LinkedList的实施。面试官想知道的是你的概念和编码技巧是否达到某个标记。

想想你可以用Linked List做些什么。为此,您必须考虑您实际正在考虑的LinkedList类型,因为有许多不同类型的LinkedList,例如SinglyLinkedListDoublyLinkedList,{ {1}}等等。

考虑SkipList,您的SinglyLinkedList实施应该至少包含以下方法:LinkedListadd()remove()contains()clear()

以下是我size()的实施:

SinglyLinkedList

如您所见,我的实现可能与您在其他地方找到的实现不同。只要数据结构的概念没有根本改变,并且只要它与定义的接口一起正常工作,小差异就不是问题。

对于像Data Structures这样的学科,您必须自己思考并根据您的要求,使用或实施适合您需求的数据结构。就访谈而言,您需要展示最小可行数据结构的实现以及所需的全部内容。只需确保这种最小可行数据结构在其上下文中没有错误。