链表头尾的实用性
Practicality of head and tail in a linked list
据我了解,头部始终指向列表中的第一个节点。尾部始终指向列表中的最后一个节点。
问题:
1) 但就实用性而言,尾巴为什么有用?
我知道拥有 head 很有用,因为您需要一个包含空引用的哨兵节点,这是 head 的工作。
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;
}
}
它允许更快地将元素添加到列表的末尾,因为您不需要遍历所有节点来找到最后一个。由于这可能是列表中最常见的操作,因此非常有用。
是的。列表是有序的集合。如果我按此顺序将 Alice、Bob 和 Chuck 添加到列表中,并询问列表包含什么,我希望按此顺序显示 Alice、Bob 和 Chuck。
在链表的开头,头和尾都指向null。添加新节点时,它们都指向新元素。但是,再次添加新元素时,head 始终指向第一个元素,而 tail 指向添加的新元素。
Head points to the starting node of the linked list, AND Tail points
to the last node of the linked list.
- 尾巴可以让 back-referencing 更快。比如,向最后一个节点添加元素,从链表的逆序遍历。因此,尾巴也起着重要作用。使用
head
指针执行相同的操作会很麻烦。
头部一旦分配给一个节点就不会改变它的位置,而尾部会移动到最后一个链接的最后一个节点。
- 好吧,链表节点的显示是根据它们在列表中的添加顺序来显示的。所以,是的,它总是很重要,从
head
或 tail
显示总是不同的,并且彼此 vice-versa。
我希望这能消除您的困惑。
据我了解,头部始终指向列表中的第一个节点。尾部始终指向列表中的最后一个节点。
问题:
1) 但就实用性而言,尾巴为什么有用?
我知道拥有 head 很有用,因为您需要一个包含空引用的哨兵节点,这是 head 的工作。
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;
}
}
它允许更快地将元素添加到列表的末尾,因为您不需要遍历所有节点来找到最后一个。由于这可能是列表中最常见的操作,因此非常有用。
是的。列表是有序的集合。如果我按此顺序将 Alice、Bob 和 Chuck 添加到列表中,并询问列表包含什么,我希望按此顺序显示 Alice、Bob 和 Chuck。
在链表的开头,头和尾都指向null。添加新节点时,它们都指向新元素。但是,再次添加新元素时,head 始终指向第一个元素,而 tail 指向添加的新元素。
Head points to the starting node of the linked list, AND Tail points to the last node of the linked list.
- 尾巴可以让 back-referencing 更快。比如,向最后一个节点添加元素,从链表的逆序遍历。因此,尾巴也起着重要作用。使用
head
指针执行相同的操作会很麻烦。
头部一旦分配给一个节点就不会改变它的位置,而尾部会移动到最后一个链接的最后一个节点。
- 好吧,链表节点的显示是根据它们在列表中的添加顺序来显示的。所以,是的,它总是很重要,从
head
或tail
显示总是不同的,并且彼此 vice-versa。
我希望这能消除您的困惑。