我在考虑解决这个问题.
我的输入:
1.有一个指向最后一个节点的尾指针.
2.一旦知道了最后一个指针,就可以轻松地在它旁边添加一个新节点.
Void Insert(Node N)
{
if (head == null) // linked list is empty
{
head = N; tail = N; tail.Next = head;
}
else
{
Node temp = tail.Next; // since this is circular tail will point to head
Tail.Next = N;
N.Next = temp; // correct
tail = N;
}
}
Run Code Online (Sandbox Code Playgroud)
没有使用尾指针,任何人都能想到更好的解决方案吗?还如问题所述没有遍历?这是一个面试问题,只需要一些输入来找到最佳解决方案.
Sva*_*nte 13
我猜你有一个单链接的循环列表,只有一个指向一个元素的指针(称之为头节点).因此,列表的每个节点由值和指向下一个元素的指针组成.尾节点指向头节点.在头节点之后直接插入节点是微不足道的.我想你想在头节点之前插入一个节点.为此,您需要新节点成为最后一个节点,该节点从前一个节点指向,并指向头节点.现在,您希望避免遍历列表以查找最后一个节点.这意味着您无法访问最后一个节点,因此不能修改其指针.使这项工作的唯一方法是修改最后一个节点指向的位置,即: