기록방

스택 (Stack) 본문

CS/자료구조

스택 (Stack)

Soom_1n 2021. 5. 4. 10:50
스택 : 데이터를 일시적으로 저장하기 위해 사용하는 자료구조. 후입선출(LIFO, Last In First Out)

 

[ 기능 ]

  • push : 스택에 데이터를 넣음
  • pop : 스택의 맨 위 데이터를 꺼냄
  • peek(top) : 스택의 맨 위 데이터를 알림(엿봄)
  • indexOf : 스택에 특정 값이 있는지, 있다면 어느 위치에 있는지 알림
  • clear : 스택 비우기
  • size : 스택의 데이터  수를 확인
  • isEmpty : 스택이 비었는지 확인
  • isFull : 스택이 가득 찼는지 확인
  • dump : 스택의 모든 데이터 확인

[ python ]

 

class Stack:
    def __init__(self):
        print('\n-- 스택 프로그램 --')
        self.st = []
        self.max = 1000

    def push(self, num):
        if len(self.st) < self.max:
            self.st.append(num)
            print('push :', num)
        else:
            print('오류 : 스택이 가득 찼습니다.')

    def pop(self):
        if self.st:
            temp = self.st.pop()
            print('pop :',temp)
        else:
            print('오류 : 스택이 비었습니다.')

    def peek(self):
        if self.st:
            print('top :',self.st[-1])
        else:
            print('오류 : 스택이 비었습니다.')

    def indexOf(self, num):
        if num in self.st:
            print('\'{0}\'의 위치는 {1}번 인덱스입니다.'.format(num,self.st.index(num)))
        else:
            print('스택 안에 \'{0}\' 없습니다.'.format(num))

    def clear(self):
        self.st = []
        print('스택이 초기화 되었습니다.')

    def size(self):
        print('스택의 크기는 {0} 입니다.'.format(len(self.st)))

    def isEmpty(self):
        if self.st:
            print('스택이 비어있지 않습니다.')
        else:
            print('스택이 비어있습니다.')

    def isFull(self):
        if len(self.st) < self.max:
            print('스택이 가득차지 않았습니다.')
        else:
            print('스택이 가득 찼습니다.')

    def dump(self):
        print('stack :',self.st)


st = Stack()
op = 1
num = 0

while op != 0:
    print('\n[menu]')
    print('1)push 2)pop 3)peek 4)indexOf 5)clear 6)size 7)isEmpty 8)isFull 9)dump 0)exit')
    print('op : ',end='')
    op = int(input())
    print('')

    if op == 1:
        num = int(input('num : '))
        st.push(num)
    elif op == 2:
        st.pop()
    elif op == 3:
        st.peek()
    elif op == 4:
        num = int(input('num : '))
        st.indexOf(num)
    elif op == 5:
        st.clear()
    elif op == 6:
        st.size()
    elif op == 7:
        st.isEmpty()
    elif op == 8:
        st.isFull()
    elif op == 9:
        st.dump()
    elif op != 0:
        print('잘못 입력하셨습니다.')

print('종료합니다.')

 

728x90

'CS > 자료구조' 카테고리의 다른 글

트라이(Trie) 자료구조  (0) 2024.05.19
데큐 (Deque)  (0) 2021.05.04
큐 (Queue)  (0) 2021.05.04