public MyLinkedNode <T> PopTail() { var oldTail = Tail; Tail = GetLastNodeManually(); return(oldTail); }
public MyLinkedNode <T> PopHead() { var oldHead = Head; Head = Head.Next; return(oldHead); }
public void InsertAtEnd(T value) { if (Head == null) { Head = new MyLinkedNode <T>(value); Tail = Head; } else { Tail.Next = new MyLinkedNode <T>(value); Tail = Tail.Next; } }
public void InsertAsHead(T value) { if (Head == null) { Head = new MyLinkedNode <T>(value); } else { var newHead = new MyLinkedNode <T>(value); newHead.Next = Head; Head = newHead; } }
public static void ReverseList(MyLinkedList <T> list) { var current = list.Head; MyLinkedNode <T> prev = null, next = null; while (current.Next != null) { next = current.Next; current.Next = prev; prev = current; current = next; } current.Next = prev; list.Head = current; }
public MyLinkedList() { Head = null; Tail = null; }
public MyLinkedNode(T value) { Value = value; Next = null; }