У меня есть домашняя работа, чтобы написать метод, который удалит FIRST-узел и вернет его значение в двусвязный список в O (1), и еще один метод, чтобы удалить LAST-узел в двусвязном списке и вернуть его значение в O (1). Это то, что я сделал до сих пор.
class DoubleList<T>
{
DNode _start;
DNode _end;
public void AddFirst(T value)
{
DNode tmp = new DNode(value);
tmp._next = _start;
tmp._prev = null;
if (_start != null)
{
_start._prev = tmp;
}
_start = tmp;
if (_start._next == null)
_end = tmp;
}
public void AddLast(DoubleList<T> doubleyList, T value)
{
DNode tmp = new DNode(value);
if (_start == null)
{
AddFirst(value);
return;
}
DNode lastNode = GetLastNode(doubleyList);
lastNode._next = tmp;
tmp._prev = lastNode;
_end._next = tmp;
_end = tmp;
}
}