链接列表中头尾的实用性

时间:2015-04-25 07:02:20

标签: java data-structures linked-list tail head

据我所知,头部始终指向列表中的第一个节点。尾部始终指向列表中的最后一个节点。

问题:

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;

        }
    }

2 个答案:

答案 0 :(得分:1)

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

  2. 是。列表是有序集合。如果我按照该顺序将Alice,Bob和Chuck添加到列表中,并询问列表中包含的内容,我希望按顺序显示Alice,Bob和Chuck。

答案 1 :(得分:1)

在链表的开头,head和tail都指向null。添加新节点时,它们都指向新元素。但是,同样,只要再次添加新元素,头部始终指向第一个元素,而尾部指向添加的新元素。

  

头指向链表的起始节点,AND Tail点   到链表的最后一个节点。

  1. 尾部允许反向引用更快。比如,将元素添加到最后一个节点,从链表的相反顺序遍历。因此,尾巴也起着重要作用。使用head指针执行相同的操作会很麻烦。
  2. 一旦分配给一个节点,Head就不会改变它的位置,而尾部会被移动到最后一个链接的节点。

    1. 嗯,链表节点的显示根据它们在列表中的添加方式显示顺序。所以,是的,它始终很重要,headtail的显示将始终不同,反之亦然。
    2. 我希望这可以解决你的困惑。