public void Add(int value) { DllNode newNode = new DllNode(value); if (Head == null) { Head = newNode; ExpressNode eNode = new ExpressNode(Head); Head.Top = eNode; } else { DllNode runner = Head; DllNode prevRunner = Head; DllNode found = Head; int count = 0; while (runner.Next != null) { if (count >= 5) { ExpressNode newENode = new ExpressNode(runner); runner.Top = newENode; count = 1; } if (count != 0) { prevRunner = prevRunner.Next; } runner = runner.Next; count++; } prevRunner = newNode.Prev; runner.Next = newNode; } }
public bool Remove(int val) { if (Head == null) { return(false); } else if (Head.Value == val) { Head = Head.Next; Head.Prev = null; return(true); } else { DllNode runner = Head; while (runner.Next != null) { if (runner.Value == val) { runner.Prev.Next = runner.Next; runner.Next.Prev = runner.Prev; return(true); } } if (runner.Value == val) { runner.Prev.Next = null; return(true); } else { return(false); } } }
public void PrintVals() { DllNode runner = Head; while (runner.Next != null) { if (runner.Top != null) { System.Console.WriteLine($"{runner.Value} -> {runner.Top.DNode.Value}"); } else { System.Console.WriteLine($"{runner.Value} |"); } runner = runner.Next; } if (runner.Top != null) { System.Console.WriteLine($"{runner.Value} -> {runner.Top.DNode.Value}"); } else { System.Console.WriteLine($"{runner.Value} |"); } }
public void Reverse() { if (Head == null) { System.Console.WriteLine("Cannot reverse an empty list"); } else if (Head.Next == null) { return; } else { DllNode runner = Head; while (runner.Next != null) { runner = runner.Next; } Head = runner; DllNode temp = runner.Prev; runner.Prev = null; runner = runner.Next; while (runner.Next != null) { if (runner.Prev == null) { runner.Next = null; } temp = runner.Next; runner.Next = runner.Prev; runner.Prev = temp; } } }
public void Add(int value) { DllNode newNode = new DllNode(value); if (Head == null) { Head = newNode; } else { DllNode runner = Head; DllNode prevRunner = Head; int count = 0; while (runner.Next != null) { if (count != 0) { prevRunner = prevRunner.Next; } runner = runner.Next; count = 1; } prevRunner = newNode.Prev; runner.Next = newNode; } }
public DllNode(int value) { Value = value; Next = null; Prev = null; Top = null; }
public DllNode(int val) { // your code here Value = val; Next = null; Prev = null; }
public DllNode Find(int val) { DllNode runner = Head; while (runner.Value != val) { runner = runner.Next; } return(runner); }
public void PrintVals() { DllNode runner = Head; while (runner.Next != null) { System.Console.WriteLine(runner.Value); runner = runner.Next; } System.Console.WriteLine(runner.Value); }
public IEnumerator <T> GetEnumerator() { DllNode <T> current = linkedList.Head; while (current != null) { yield return(current.Data); current = current.Next; } }
public DllNode RemoveAtN(int idx) { DllNode runner = Head; for (int i = 0; i < idx - 1; i++) { runner = runner.Next; } DllNode retVal = runner.Next; runner.Next = runner.Next.Next; return(retVal); }
public void Reverse() { DllNode runner = Head; while (runner.Next != null) { runner = runner.Next; } DllNode temp = runner.Prev; runner.Prev = runner.Next; runner.Next = temp; }
public int Remove() { DllNode runner = Head; while (runner.Next.Next != null) { runner = runner.Next; } int retVal = runner.Value; runner.Next = null; return(retVal); }
public void printIndo() { if (Head == null) { Console.WriteLine("this list is empty"); return; } DllNode runner = Head; while (runner != null) { Console.WriteLine("this node's value is : " + runner.Value); runner = runner.Next; } }
public void Push(T data) { linkedList.PushToHead(data); Count++; //update middle node if (middleNode == null) { middleNode = linkedList.Head; } else if (Count % 2 == 0) //added new node to make even list, move middle { middleNode = middleNode.Prev; } }
public bool Remove(int value) { if (Head == null) { return(false); } DllNode runner = Head; while (runner != null) { if (runner.Value == value) { if (runner.Prev != null) { if (runner.Next != null) //not the first node or last node { runner.Next.Prev = runner.Prev; runner.Prev.Next = runner.Next; return(true); } else { runner.Prev.Next = null;// last node return(true); } } else { if (runner.Next != null) // the first node but not the last node { runner.Next.Prev = null; Head = runner.Next; return(true); } else //this list hava only one node { Head = null; return(true); } } } runner = runner.Next; } Console.WriteLine("didn't find a node contains given value"); return(false); //didn't find a node contains given value }
public void Add(int val) { DllNode newNode = new DllNode(val); if (Head == null) { Head = newNode; } else { DllNode runner = Head; while (runner.Next != null) { runner = runner.Next; } runner.Next = newNode; newNode.Prev = runner; } }
public void Add(int value) { DllNode newNode = new DllNode(value); if (this.Head == null) { this.Head = newNode; } else { DllNode runner = this.Head; while (runner.Next != null) { runner = runner.Next; } runner.Next = newNode; runner.Next.Prev = runner; } }
public T Pop() { if (Count > 0) { Count--; T data = linkedList.DeleteHeadNode().Data; //update middle node if (Count == 0) { middleNode = null; } else if (Count % 2 != 0) { middleNode = middleNode.Next; } return(data); } return(default(T)); }
public void Reverse() { if ((Head == null) || (Head.Next == null)) { return; } DllNode runner1 = Head; DllNode runner2 = Head.Next; DllNode runner3 = runner2; Head.Next = null; while (runner2 != null) { runner3 = runner2.Next; runner1.Prev = runner2; runner2.Next = runner1; runner1 = runner2; runner2 = runner3; } runner1.Prev = null; Head = runner1; }
public bool Remove(int value) { DllNode runner = Head; ///Edge case for if our list is empty if (this.Head == null) { return(false); } ////If a list with a single node contains our value if (runner.Next == null) { if (runner.Value == value) { ////Only have to repoint the list's head here this.Head = null; return(true); } else { return(false); } } ////If the list has > 1 nodes begin running through the list's nodes else { while (runner.Next != null) { ////This handles every other possible node position. if (runner.Value == value) { ////Change all them pointers ////If... reroute the next node's Prev to the previous Node. if (runner.Next != null) { runner.Next.Prev = runner.Prev; } ///This is used to reroute our head past the first node if it contains our value. if (runner.Prev == null) { this.Head = runner.Next; } ////If... reroute the next node's Prev to the previous Node. if (runner.Prev != null) { runner.Prev.Next = runner.Next; } return(true); } runner = runner.Next; } ////This handles if the node we want is on the end of the list if (runner.Next == null) { if (runner.Value == value) { if (runner.Next != null) { runner.Next.Prev = runner.Prev; } if (runner.Prev != null) { runner.Prev.Next = runner.Next; } return(true); } else { return(false); } } return(false); } }
public DllNode(int val) { Value = val; Next = null; Prev = null; }
public DLList() { Head = null; }
public DoublyLList() { Head = null; }
public DoublyLinkedList() { Head = null; }
public DllNode(int val) { this.Value = val; this.Next = null; this.Prev = null; }
public DoubleLinkedList() { this.Head = null; }