예제 #1
0
 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!");
     }
 }
예제 #2
0
 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!");
     }
 }
예제 #3
0
 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];
     }
 }
예제 #4
0
 public void PushStart(T item)
 {
     ++size_of_list;
     list_data.Add(new DoubleNode <T>(item, head, null));
     head = list_data[size_of_list - 1];
 }
예제 #5
0
 public void set_previous_node(DoubleNode <T> node)
 {
     previous_node = node;
 }
예제 #6
0
 public void set_next_node(DoubleNode <T> node)
 {
     next_node = node;
 }
예제 #7
0
 public DoubleNode(T value, DoubleNode <T> next_elem, DoubleNode <T> previous_elem)
 {
     node_data     = value;
     next_node     = next_elem;
     previous_node = previous_elem;
 }