From 431785b586951f9bd655d8e77bf409996d130cfc Mon Sep 17 00:00:00 2001 From: Luke Else Date: Wed, 16 Mar 2022 22:07:11 +0000 Subject: [PATCH] Added delete method to doubly linked list --- C#/Datastructures/DoublyLinkedList.cs | 20 ++++++++++++++++++++ C#/Datastructures/LinkedList.cs | 6 +++--- C#/Program.cs | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/C#/Datastructures/DoublyLinkedList.cs b/C#/Datastructures/DoublyLinkedList.cs index de3d594..1c1bcfa 100644 --- a/C#/Datastructures/DoublyLinkedList.cs +++ b/C#/Datastructures/DoublyLinkedList.cs @@ -90,6 +90,26 @@ namespace C_.Datastructures } + public bool Delete(int index){ + DoublyLinkedListNode? node = Traverse(index); + + if (node == default) return false; + + if(node.Prev != default){ + //connect item beofre to item after node we are deleting + node.Prev.Next = node.Next; + } + + //Connect item after to the the item before the node we are deleting + if (node.Next != default) + { + node.Next.Prev = node.Prev; + } + + Count--; + return true; + } + private DoublyLinkedListNode? Traverse() { diff --git a/C#/Datastructures/LinkedList.cs b/C#/Datastructures/LinkedList.cs index bbd2190..36869ca 100644 --- a/C#/Datastructures/LinkedList.cs +++ b/C#/Datastructures/LinkedList.cs @@ -144,14 +144,14 @@ namespace C_.Datastructures // return node; //} - private LinkedListNode? Traverse(int n) + private LinkedListNode? Traverse(int i) { //Start at given point in list LinkedListNode? node = Head; - if (node != null || n == 0) + if (node != null || i == 0) { //Continue to end of list - for (int i = 0; i < n; i++) + for (int j = 0; j < i; j++) { if (node!.Next == null) return null; node = (LinkedListNode)node.Next; diff --git a/C#/Program.cs b/C#/Program.cs index 09b662d..d75807d 100644 --- a/C#/Program.cs +++ b/C#/Program.cs @@ -27,7 +27,7 @@ list2.Add(6); list2.Add(7); list2.Add(8); -var list3 = DoublyLinkedList.Create(list, null); +list.Delete(2); var x = list[-6];