static void Main(string[] args) { Console.WriteLine("\t\tCustom Linked List"); Console.WriteLine("\t\t**************"); CSLinkedList list = new CSLinkedList(); list.InsertNode(list, 1); list.InsertNode(list, 2); list.InsertNode(list, 3); list.InsertNode(list, 5); list.PrintList(list); list.DeleteByKey(list, 3); list.DeleteByKey(list, 1); list.DeleteByKey(list, 7); Console.WriteLine("Adding a new element at the end of the list"); list.InsertNode(list, 43); list.PrintList(list); Console.WriteLine("-------------------"); list.PrintList(list); Console.WriteLine("Adding a new element at random positions in list"); list.InsertAtPosition(list, 77, 6); list.InsertAtPosition(list, 77, 4); list.InsertAtPosition(list, 71, 1); list.InsertAtPosition(list, 73, 3); Console.ReadKey(); }
public void InsertAtPosition(CSLinkedList list, int data, int position) { if (position > list.Length(list) + 1 || position < 1) { Console.WriteLine("Can't add to this position. Position doesn't exist"); return; } else if (position == list.Length(list) + 1) { Console.WriteLine("List length is {0} and position is {1}.Appending at the end of the list", list.Length(list), position); list.InsertNode(list, data); list.PrintList(list); } else if (position == 1) { Console.WriteLine("Adding new node at the beginning of the list"); Node newNode = new Node(data); Node currHead = list.head; list.head = newNode; newNode.next = currHead; list.PrintList(list); } else { int currPosition = 2; Node previousNode = list.head; Node currNode = previousNode.next; Node newNode = new Node(data); while (currNode.next != null) { if (position == currPosition) { previousNode.next = newNode; newNode.next = currNode; Console.WriteLine("Adding new node at position {0}", position); Console.WriteLine("Printing updated list..."); list.PrintList(list); return; } previousNode = currNode; currNode = currNode.next; currPosition++; } } }
public void DeleteByKey(CSLinkedList list, int key) { if (list.head != null) { Node currNode = this.head; if (currNode.data == key) { list.head = currNode.next; Console.WriteLine("Key {0} found and deleted. Printing updated list...", key); list.PrintList(list); return; } else { Node previousNode = currNode; currNode = currNode.next; while (currNode.next != null) { if (currNode.data == key) { previousNode.next = currNode.next; Console.WriteLine("Key {0} found and deleted. Printing updated list...", key); list.PrintList(list); return; } previousNode = currNode; currNode = currNode.next; } if (currNode.data == key) { previousNode.next = null; Console.WriteLine("Key {0} found and deleted. Printing updated list...", key); list.PrintList(list); return; } Console.WriteLine("Key {0} not found. Printing list...", key); list.PrintList(list); } } }