DoublyLinkedList
给出了用于处理双向链表的类。有必要落实其中的方法AddAfter
和措施AddBefore
。从我所理解的一切来看,它应该基于方法Add
,但我不明白要用什么来补充它,除了LinkedListNode<T> node
- 在什么之前或之后,以及T value
- 添加。
以防万一:
public class DoublyNode<T>
{
public DoublyNode(T data)
{
Data = data;
}
public T Data { get; set; }
public DoublyNode<T> Previous { get; set; }
public DoublyNode<T> Next { get; set; }
}
public class DoublyLinkedList<T> : IEnumerable<T> // двусвязный список
{
DoublyNode<T> head; // головной/первый элемент
DoublyNode<T> tail; // последний/хвостовой элемент
int count; // количество элементов в списке
// добавление элемента
public void Add(T data)
{
DoublyNode<T> node = new DoublyNode<T>(data);
if (head == null)
head = node;
else
{
tail.Next = node;
node.Previous = tail;
}
tail = node;
count++;
}
public void AddFirst(T data)
{
DoublyNode<T> node = new DoublyNode<T>(data);
DoublyNode<T> temp = head;
node.Next = temp;
head = node;
if (count == 0)
tail = head;
else
temp.Previous = node;
count++;
}
public void AddLast(T data)
{
DoublyNode<T> node = new DoublyNode<T>(data);
DoublyNode<T> temp = tail;
node.Previous = temp;
tail = node;
if (count == 0)
head = tail;
else
temp.Next = node;
count++;
}
public void AddAfter(LinkedListNode<T> node, T value)
{
}
public void AddBefore(LinkedListNode<T> node, T value)
{
}
}
这里一切都是纯粹合乎逻辑的:
AddAfter - 您需要使参数指定的元素指向您将从值创建的新节点作为下一个节点,并且这个新节点指向参数中的这个元素作为前一个节点,以及下一个节点 - 这是这个参数的下一个节点。
那些。:
AddBefore - 类似,但新节点位于指定元素之前:
你只需要拿起来并仔细地去做,你的代码中已经有足够的例子了。
可以这么说,“大局”:
我们还需要记住处理“边缘情况”——例如,当节点是第一个或最后一个时。顺便说一下,最简单的方法是立即检查并调用针对这些情况已有的现成函数。
找到了一种破解课程
LinkedList
并监视解决方案的方法。给定的代码已被修改以满足我的要求。