-
LinkedList 클래스를 활용한 프로그램C# 예제 공부일기 2020. 7. 13. 20:44
앞에서 만든 LinkedList 클래스를 이용하여 삽입, 삭제, 출력하는 프로그램
using System; using System.ComponentModel; namespace CPractice { class Node { internal int data; internal Node next; public Node(int data) { this.data = data; next = null; } } class LinkedList { Node head; internal void InsertFront(int data) { Node node = new Node(data); node.next = head; head = node; } internal void InsertLast(int data) { Node node = new Node(data); if(head ==null) { head = node; return; } Node lastNode = GetLastNode(); lastNode.next = node; } internal Node GetLastNode() { Node temp = head; while (temp.next !=null) { temp = temp.next; } return temp; } internal void InsertAfter(int prev, int data) { Node prevNode = null; for (Node temp = head; temp != null; temp = temp.next) if (temp.data == prev) prevNode = temp; if(prevNode == null) { Console.WriteLine("{0} data is not in the list"); return; } Node node = new Node(data); node.next = prevNode.next; prevNode.next = node; } internal void DeleteNode(int key) { Node temp = head; Node prev = null; if(temp != null&&temp.data==key) { head = temp.next; return; } while(temp != null && temp.data !=key) { prev = temp; temp = temp.next; } if(temp ==null) { return; } prev.next = temp.next; } internal void Reverse() { Node Prev = null; Node current = head; Node temp = null; while(current !=null) { temp = current.next; current.next = Prev; Prev = current; current = temp; } head = Prev; } internal void Print() { for (Node node = head; node != null; node = node.next) Console.Write(node.data + " -> "); Console.WriteLine(); } } class Program { static void Main(string[] args) { LinkedList list = new LinkedList(); Random r = new Random(); for (int i = 0; i < 5; i++) list.InsertLast(r.Next(100)); //0부터 100까지 임의의 수 //를 노드의 마지막에 추가 Console.WriteLine("랜덤한 5개의 값의 리스트입니다."); list.Print(); Console.WriteLine("\n 맨 앞에 10 맨 뒤에 90 삽입. <ENTER>를 입력하세요."); Console.ReadLine(); list.InsertFront(10); list.InsertLast(90); list.Print(); Console.WriteLine("\nx 노드 뒤에 y값을 저장하려고 합니다. "); Console.Write(" x 값을 입력하세요 : "); int x = int.Parse(Console.ReadLine()); Console.Write(" y 값을 입력하세요 : "); int y = int.Parse(Console.ReadLine()); list.InsertAfter(x, y); list.Print(); Console.WriteLine("\n 삭제할 노드의 값을 입력하세요 :"); int z = int.Parse(Console.ReadLine()); list.DeleteNode(z); list.Print(); Console.WriteLine("\n 리스트를 뒤집어서 출력"); list.Reverse(); list.Print(); } } }
'C# 예제 공부일기' 카테고리의 다른 글
스택을 이용한 프로그램 (0) 2020.07.14 Stack<T>의 구현 (0) 2020.07.14 LinkedList의 구현 (0) 2020.07.13 dynamic 형을 사용하는 일반화 프로그램 (0) 2020.07.13 일반화 클래스(제네릭 클래스) (0) 2020.07.13