据我所知,头部始终指向列表中的第一个节点。尾部始终指向列表中的最后一个节点。
问题:
1)但就实用性而言,为什么尾巴有用呢?
我理解头部是有用的,因为你需要一个包含空引用的前哨节点,这是头部的工作。
2)如果我从头部开始显示列表或从尾部开始显示列表真的很重要吗?
我看到了一些带尾部的链表实现和其他没有尾部的实现。
public void insert(Link link)
{
// this executes once
// when linked list is initially empty
if(head == null)
{
// next point to the head
link.next = head;
// head point to the inserted link
head = link;
// tail point to the inserted link as well
tail = link;
}
else
{
// next point to tail
link.next = tail;
// tail point to the inserted link
tail = link;
}
}
public void display()
{
// display the linked list starting from the tail back to head
while(tail != null)
{
System.out.println(tail.data);
tail = tail.next;
}
}
答案 0 :(得分:1)
它允许更快地在列表末尾添加元素,因为您不需要遍历所有节点来查找最后一个节点。由于这可能是列表中最常见的操作,因此它非常有用。
是。列表是有序集合。如果我按照该顺序将Alice,Bob和Chuck添加到列表中,并询问列表中包含的内容,我希望按顺序显示Alice,Bob和Chuck。
答案 1 :(得分:1)
在链表的开头,head和tail都指向null。添加新节点时,它们都指向新元素。但是,同样,只要再次添加新元素,头部始终指向第一个元素,而尾部指向添加的新元素。
头指向链表的起始节点,AND Tail点 到链表的最后一个节点。
head
指针执行相同的操作会很麻烦。一旦分配给一个节点,Head就不会改变它的位置,而尾部会被移动到最后一个链接的节点。
head
或tail
的显示将始终不同,反之亦然。我希望这可以解决你的困惑。