기록방
스택 (Stack) 본문
스택 : 데이터를 일시적으로 저장하기 위해 사용하는 자료구조. 후입선출(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 |