21 09 23 수업내용(Stack 복습)

21 09 23 수업내용(Stack 복습)

namespace HelloWorld { class App { //생성자 public App() { Stack stack = new Stack(); stack.Push(3); stack.Push(5); stack.Push(7); stack.Push(11); int pop = stack.Pop(); Console.WriteLine(pop); //11 int peek = stack.Peek(); Console.WriteLine(peek); //7 int count = stack.NodeCount(stack.top); Console.WriteLine(count); //3 } } }

namespace HelloWorld { class Stack { public class Node { public int data; public Node next; //생성자 public Node(int data) { this.data = data; } } public Node top; //생성자 public Stack() { } //개체 추가(Push) public void Push(int num) { Node node = new Node(num); Node temp; temp = top; if(temp == null) { top = node; } else if (temp != null) { top = node; top.next = temp; } } //개체를 반환 및 제거(Pop) public int Pop() { try { Node temp; int num = 0; num = top.data; temp = top; top = temp.next; return num; } catch { if (top == null) { throw new InvalidOperationException(); } return 0; } } //개체를 제거하지않고 반환(Peek) public int Peek() { int num = 0; num = top.data; return num; } //노드 갯수 public int NodeCount(Node node, int count = 0) { if(node == null) { return count; } return NodeCount(node.next, count + 1); } } }

수정

public int Pop() { try { Node temp; int num = 0; num = top.data; temp = top; top = temp.next; return num; } //catch부분 수정 catch(InvalidOperationException e) { throw e; } }

from http://hayedak2.tistory.com/134 by ccl(A) rewrite - 2021-09-23 11:00:32