何时使用LinkedListNode vs LinkedList

时间:2016-07-12 19:55:57

标签: java data-structures linked-list

我无法通过破解编码面试来理解这个问题:

编写代码以从未排序的链接列表中删除重复项

解决方案:

 public static void deleteDups(LinkedListNode n){
    Hashtable table = new Hashtable();
    LinkedListNode previous = null; 
    while(n != null ){
        if(table.containsKey(n.data)) {
            previous.next = n.next;
        } else{
            table.put(n.data, true);
            previous = n;
        }
        n = n.next;
    }
}

我不明白为什么你传入LinkedListNode而不是LinkedList。如果你想删除链表中的重复项,为什么你不能接受并遍历整个列表呢?

2 个答案:

答案 0 :(得分:3)

正如名称所示的那样LinkedList,所以如果你有起始节点,那么就有了这个列表。 LinkedList仅仅是不同内存空间中不同节点的链,不要对待或期望它像数组一样,这是一个连续的空间块。

答案 1 :(得分:2)

这里LinkedListNode是一个类

    public LinkedListNode{
    int data;
    LinkedListNode next;

    public LinkedListNode(int data){
    this.data = data;
    next = null;
    }

    }
    LinkedListNode head = new LinkedListNode(1);
    LinkedListNode node1 = new LinkedListNode(2);
    LinkedListNode node2 = new LinkedListNode(3);
    head.next = node1;
    node1.next  = node2;
    //1->2-3
    deleteDups(head);

这里head node(data = 1)是我们在deleteDups中传递的已创建链表的头部。 在这个函数中,我们使用next迭代遍历给定列表。