【发布时间】:2013-10-29 01:42:31
【问题描述】:
情况
我明天接受 TripAdvisor 的采访,我决定练习创建自己的自定义 LinkedList。我正在尝试找出遍历它的最佳方法。
主要问题:我已经设法遍历了我的链接列表,但我相信 有更好的方法来做到这一点。您将如何遍历它?
额外问题:我的整体课程看起来如何?有什么我应该/不应该添加的吗? 它似乎工作正常,但它是最佳的吗?
额外问题 #2:最后我想知道是否有人对我必须知道的典型面试问题/概念有任何见解?
非常感谢。
这是我的课程
// *********************************Node Class*******************************************
public class Node<T> {
Node<T> link;
T data;
public Node(T data) {
this.data = data;
link = null;
}
public T getData() {
return data;
}
public Node<T> getLink() {
return link;
}
public Node<T> setLink(Node<T> N) {
this.link = N;
return link;
}
public void setData(T newData) {
this.data = newData;
}
}
//****************************************Linked List Class*******************************
public class LinkedList<T> {
Node<T> head;
T data;
public LinkedList(){
head = null;
}
public void add(T data){
Node<T> newNode = new Node<T> (data);
newNode.setLink(head);
head = newNode;
}
//had problems printing out the data in the last node
public void traverse(){
Node<T> pointer;
pointer = head;
while (pointer.getLink()!=null){
System.out.println(pointer.getData());
pointer = pointer.setLink(pointer.getLink());
}
//Fixed problems For last node that doesnt get printed out
System.out.println(pointer.getData());
}
//还有更好的方法吗? //谢谢 }
【问题讨论】:
-
你面试什么职位?
-
你为什么不能只使用
pointer = pointer.getLink();和while (pointer != null) {(并删除你最后的打印语句) -
涉及链表的面试问题通常集中在“删除”操作上,因为它有一些有趣的边缘情况。还有一个常见的面试问题是这样的:“你如何检测循环链表或包含循环的链表?”
-
@omalsa04 感谢您的洞察力!不敢相信我自己没有想到那个解决方案
标签: java linked-list traversal