首页 > 解决方案 > 对于单链表,是否总是必须添加一个新节点作为第一个元素?

问题描述

通常在单链表中,是否总是添加一个新元素作为 head.next,也就是作为第一个元素?还是您走到列表的末尾并将其添加到那里?

标签: singly-linked-list

解决方案


根据斯坦福大学的这个讲座(13:00 分钟后),将步行添加到列表的末尾并在那里添加新节点。这是代码的屏幕截图(C++) 在此处输入图像描述

UC Berkley (Java) 的讲义中,他们将其添加为第一项,但随后他们明确地将其称为 insertFront()

public class SList {
  private SListNode head;             // First node in list.
  private int size;                   // Number of items in list.

  public SList() {                    // Here's how to represent an empty list.
    head = null;
    size = 0;
  }

  public void insertFront(Object item) {
    head = new SListNode(item, head);
    size++;
  }
}

在java框架的LinkedList类中(这是双向链表),add就是添加到链表的末尾。因此,如果您添加 1,然后添加 2,然后添加 3,则 3 将是列表中的最后一项。

简而言之:除非明确称为 addFront(或类似名称),否则在 LinkedList 上添加意味着添加为最后一项。


推荐阅读