static void Main(string[] args) { int choice, data, position, existData; // SingleLinkedList 인스턴스 생성 SingleLinkedList list = new SingleLinkedList(); // LinkedList 생성 list.CreateList(); while (true) { Console.WriteLine("\n1. Display list"); Console.WriteLine("2. Count the number of nodes"); Console.WriteLine("3. Search for an element"); Console.WriteLine("4. Insert in empty list/Insert in the beggining of the linkedlist."); Console.WriteLine("5. Insert a noode at the end of the list"); Console.WriteLine("6. Insert a node after a specified node"); Console.WriteLine("7. Insert a node before a specified node"); Console.WriteLine("8. Insert a node at a given position"); Console.WriteLine("9. Delete first node"); Console.WriteLine("10. Delete last node"); Console.WriteLine("11. Delete any node"); Console.WriteLine("12. Reverse the list"); Console.Write("Please input a number: "); choice = Convert.ToInt32(Console.ReadLine()); switch (choice) { // 1. LinkedList에 있는 데이터 출력 case 1: list.DisplayList(); break; // 2. LinkedList에 있는 노드 개수 출력 case 2: list.CountNodes(); break; // 3. LinkedList에서 입력 데이터 탐색 case 3: Console.Write("Enter the element to be searched: "); data = Convert.ToInt32(Console.ReadLine()); list.Search(data); break; // 4. LinkedList 처음 부분에 삽입 case 4: Console.Write("Enter the element to be inserted: "); data = Convert.ToInt32(Console.ReadLine()); list.InsertAtBeginning(data); break; // 5. LinkedList 마지막 부분에 삽입 case 5: Console.Write("Enter the element to be inserted: "); data = Convert.ToInt32(Console.ReadLine()); list.InsertAtEnd(data); break; // 6. LinkedList 특정 노드 뒤에 삽입 case 6: Console.Write("Enter the element to be inserted: "); data = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter the existing node: "); existData = Convert.ToInt32(Console.ReadLine()); list.InsertAfter(data, existData); break; // 7. LinkedList 특정 노드 뒤에 삽입 case 7: Console.Write("Enter the element to be inserted: "); data = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter the position to insert in: "); existData = Convert.ToInt32(Console.ReadLine()); list.InsertBefore(data, existData); break; // 8. LinkedList 특정 위치에 삽입 case 8: Console.Write("Enter the element to be inserted: "); data = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter the existing position: "); position = Convert.ToInt32(Console.ReadLine()); list.InsertAtPosition(data, position); break; // 9. LinkedList 첫 번째 노드 제거 case 9: Console.Write("Delete first node"); list.DeleteAtFirst(); break; // 10. LinkedList 마지막 노드 제거 case 10: Console.Write("Delete last node"); list.DeleteAtEnd(); break; // 11. LinkedList 특정 노드 제거 case 11: Console.Write("Enter the element to be deleted: "); data = Convert.ToInt32(Console.ReadLine()); list.DeleteNode(data); break; // 12. LinkedList 순서 변경 case 12: Console.Write("Reverse the LinkedList."); list.Reverse(); break; default: Console.WriteLine("Wrong Choice"); break; } } }