본문 바로가기

Python/알고리즘 및 자료구조

스택(Stack)

스택

스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(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