链表头尾的实用性

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;

        }
    }
  1. 它允许更快地将元素添加到列表的末尾,因为您不需要遍历所有节点来找到最后一个。由于这可能是列表中最常见的操作,因此非常有用。

  2. 是的。列表是有序的集合。如果我按此顺序将 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.

  1. 尾巴可以让 back-referencing 更快。比如,向最后一个节点添加元素,从链表的逆序遍历。因此,尾巴也起着重要作用。使用 head 指针执行相同的操作会很麻烦。

头部一旦分配给一个节点就不会改变它的位置,而尾部会移动到最后一个链接的最后一个节点。

  1. 好吧,链表节点的显示是根据它们在列表中的添加顺序来显示的。所以,是的,它总是很重要,从 headtail 显示总是不同的,并且彼此 ​​vice-versa。

我希望这能消除您的困惑。