스택
스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있음
데이터를 밀어넣는 것 즉 저장은 push, 데이터를 꺼내는 것 즉 처리(삭제) 는 pop 이라고 함 top 을 이용하면 데이터를 삭제하지 않고 맨 위의 값을 가져옴
스택 구현
class Stack_ex: #스택 생성하는 클래스
def __init__(self,max):
self.__top = -1
self.__stack_list = []
self.__max = max
def push(self,data): #데이터 push
if self.__top == self.__max -1:
print("저장 공간 부족")
return False
self.__top += 1
self.__stack_list.append(data)
return True
def pop(self): #데이터 pop
if self.__top < 0:
print("제거할 요소가 없습니다.")
return False
del self.__stack_list[self.__top]
self.__top -= 1
return True
def top(self): #맨위의 데이터 반환
if self.__top == -1:
print("반환할 요소가 없습니다.")
return False
return self.__stack_list[self.__top]
#스택생성하여 추가,삭제 및 확인
stack_01 = Stack_ex(int(input("스택 최대 길이 입력: ")))
while True:
print("1. 데이터 추가".center(30,"-"))
print("2. 데이터 삭제".center(30,"-"))
print("3. 데이터 확인".center(30,"-"))
print("4. 종료".center(30,"-"))
idx = int(input("실행 함수 입력: "))
if idx == 1:
stack_01.push(input("값 입력: "))
elif idx == 2:
stack_01.pop()
elif idx == 3:
print(stack_01.top())
else:
break
'Python > 알고리즘 및 자료구조' 카테고리의 다른 글
퀵 정렬(quick sort) (0) | 2021.03.06 |
---|---|
합병 정렬(merge sort) (0) | 2021.03.05 |
선택정렬 (0) | 2021.03.05 |
팩토리얼(factorial)과 재귀호출 (0) | 2021.03.04 |
버블정렬(Bubble Sort) (0) | 2021.03.04 |