21 09 24 수업내용(Queue복습)

21 09 24 수업내용(Queue복습)

namespace HelloWorld { class Queue { class Node { public int Data { get; private set; } public Node Next { get; set; } //생성자 public Node(int data) { this.Data = data; } } private Node head; private Node tail; private Node temp; //생성자 public Queue() { } //노드 넣기(Enqueue) public void Enqueue(int data) { Node node = new Node(data); if(head == null) { head = node; tail = head; } else { tail.Next = node; tail = tail.Next; } } //노드제거 및 Data 반환(Dequeue) public int Dequeue() { if(head == null) { throw new InvalidOperationException(); } else { int num = head.Data; head = head.Next; if (head == null && tail != null) { tail = null; } return num; } } //Data 반환(Peek) public int Peek() { if(head == null) { throw new InvalidOperationException(); } else { int num = head.Data; return num; } } //노드 갯수 반환(재귀함수) public int CountRecursive(int count = 0) { if(temp == null && count == 0) { temp = head; } if(temp == null && count > 0) { return count; } else { temp = temp.Next; return CountRecursive(count + 1); } } //노드 갯수 반환(while문) public int Count() { int count = 0; temp = head; while(true) { if(temp != null) { count++; temp = temp.Next; } else { return count; } } } } }

공유하기 글 요소 저작자표시

from http://hayedak2.tistory.com/140 by ccl(A) rewrite - 2021-09-24 10:27:06