public T RemoveTail() { if (!isEmpty()) { var value = PeekTail(); tail = tail.get_previous_node(); --size_of_list; return(value); } else { throw new Exception("Cannot remove tail. List is empty!"); } }
public T RemoveHead() { if (!isEmpty()) { var value = PeekHead(); head = head.get_next_node(); --size_of_list; return(value); } else { throw new Exception("Cannot remove head. List is empty!"); } }
public void PushBack(T item) { if (head == null) { list_data.Add(new DoubleNode <T>(item, null, null)); ++size_of_list; head = list_data[0]; tail = list_data[0]; } else { list_data.Add(new DoubleNode <T>(item, null, list_data[size_of_list - 1])); ++size_of_list; tail.set_next_node(list_data[size_of_list - 1]); tail = list_data[size_of_list - 1]; } }
public void PushStart(T item) { ++size_of_list; list_data.Add(new DoubleNode <T>(item, head, null)); head = list_data[size_of_list - 1]; }
public void set_previous_node(DoubleNode <T> node) { previous_node = node; }
public void set_next_node(DoubleNode <T> node) { next_node = node; }
public DoubleNode(T value, DoubleNode <T> next_elem, DoubleNode <T> previous_elem) { node_data = value; next_node = next_elem; previous_node = previous_elem; }