Home Stack
Post
Cancel

Stack

Stack

스택은 프로그래밍과 데이터 구조에서 중요한 개념 중 하나이다. 이 데이터 구조는 “Last-In, First-Out” (LIFO) 원칙을 따르며, 요소의 추가와 제거가 상단에서만 일어난다. 스택은 주로 함수 호출, 뒤로 가기 버튼의 동작, 깊이 우선 탐색 등 다양한 응용 분야에서 사용된다.

스택 추상 데이터 타입(Abstract Data Type)

연산기능
init()스택 초기화
create()스택 생성 (__init__ 을 이용하는게 일반적이다)
is_empty()스택 비어있는지 확인
is_full()스택이 가득 찼는지 확인
push(item)스택의 맨 위에 요소 추가
pop()스택의 맨 위에 있는 요소를 제거 후 반환
peek()스택의 맨 위 요소를 삭제하지 않고 반환

스택의 연산 목록

연산기능
push()스택에 데이터 삽입
pop()스택에서 데이터 삭제하여 반환
is_empty()스택에 원소가 없으면 True, 있으면 False 반환
peek()스택 맨 위 데이터 반환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Node:
    def __init__(self, data, next_node=None):
        self.data = data
        self.next = next_node

class Stack:
    def __init__(self):
        self.top = None

    def is_empty(self):
        return self.top is None

    def push(self, item):
        new_node = Node(item)
        new_node.next = self.top
        self.top = new_node

    def pop(self):
        if not self.is_empty():
            popped_item = self.top.data
            self.top = self.top.next
            return popped_item

    def peek(self):
        if not self.is_empty():
            return self.top.data