자료구조 : Stack

rlask.rbs·2025년 9월 21일

[자료구조]

목록 보기
5/5

Stack

stack은 항목들이 쌓여 있는 구조를 뜻하며, LIFO(Last-In, First-Out) 원칙을 따른다. 이 말은, 가장 마지막에 스택에 추가된 항목이 가장 먼저 제거된다는 뜻

**큐는 FIFO, 스택은 LIFO를 쓰는것이 차이가 있다

stack의 연산

  • push() : 새로운 요소를 스택의 최상단에 추가
  • pop() : 스택의 맨 위에 있는 요소를 꺼내서 반환
  • isEmpty() : 스택이 비어 있으면, True, 아니면 False를 반환
  • isFull() : 스택이 가득 차 있으면 True, 아니면 False를 반환
  • size() : 스택에 들어 있는 전체 요소의 수를 반환
  • peek() : 스택의 맨 위에 있는 항목을 삭제하지 않고 반환

stack 구현


# 스택 생성
stack = []

# 스택에 요소 추가 (push 연산)
stack.append('apple')
stack.append('banana')
stack.append('cherry')

print(stack)  # 출력: ['apple', 'banana', 'cherry']

# 스택에서 요소 제거 (pop 연산)
item = stack.pop()
print(item)  # 출력: 'cherry'
print(stack)  # 출력: ['apple', 'banana']

이 예제에서는, 'cherry'가 스택에 마지막에 추가되었으므로 'cherry'가 먼저 제거된다. 이러한 행동은 스택의 LIFO(Last In, First Out) 원칙을 따르는 것이다.

위와 같은 방식으로 파이썬의 기본 데이터 타입을 활용해 스택을 간단하게 구현하고 활용할 수 있다. 이 외에도 파이썬 표준 라이브러리의 collections.deque나 queue.LifoQueue 등을 이용하여 스택을 구현할 수도 있다.

stack_list = list()

def push(data):
	stack_list.append(data)
    
def pop():
	data = stack_list[-1]
    del stack_list[-1]
    return data
    
for index in range(10):
	push(index) #0번부터 9번까지 데이터가 들어간다.

pop() #9가 출력된다.

queue 모듈의 LifoQueue 사용하기

파이썬에선 queue 모듈에서 큐(Queue)나 스택(LifoQueue), 우선순위 큐(Priority Queue) 등을 클래스로 제공해준다. 따라서 이 모듈의 LifoQueue를 사용하면 손쉽게 스택을 사용할 수 있다.

import queue
s = queue.LifoQueue(maxsize = 20)
profile
KHU I.E 23

0개의 댓글