스택과 큐는 프로그래밍에서 데이터를 저장하고 조작하는 데 사용되는 자료구조입니다. 이들은 각각 데이터의 삽입과 삭제 방법의 차이가 있으며, 다양한 상황에서 유용하게 사용됩니다.
스택
- 후입선출(LIFO. Last In First Out) : 데이터를 한쪽 끝에서만 접근할 수 있는 선형 자료구조입니다. 이를 통해 데이터는 마지막에 추가된 것이 가장 먼저 삭제됩니다.
- 주로 함수호출, 재귀 알고리즘, 브라우저의 뒤로가기 기능에서 사용됩니다.
예시 코드(Python)
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
return "Stack is empty"
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
return "Stack is empty"
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
# 스택 테스트
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print("스택 크기:", stack.size())
print("맨 위 아이템:", stack.peek())
print("pop:", stack.pop())
print("맨 위 아이템:", stack.peek())
print("스택이 비어있는가?", stack.is_empty())
# 스택크기: 3
# 맨 위 아이템: 3
# pop: 3
# 맨 위 아이템: 2
# 스택이 비어있는가? False
큐
- 선입선출(FIFO. First In First Out) : 데이터를 한쪽에서는 삽입하고, 다른 한쪽에서는 삭제할 수 있는 선형 자료구조입니다. 삽입은 큐의 끝에서 이루어지고, 삭제는 큐의 앞에서 이루어집니다.
- 작업처리, 네트워크 패킷 처리, 프린트 대기열 등의 상황에서 사용됩니다.
예시코드(Python)
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
else:
return "Queue is empty"
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
# 큐 테스트
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print("큐 크기:", queue.size())
print("큐에서 추출된 아이템:", queue.dequeue())
print("큐 크기:", queue.size())
print("큐가 비어있는가?", queue.is_empty())
# 큐 크기: 3
# 큐에서 추출된 아이템: 1
# 큐 크기: 2
# 큐가 비어있는가? False
반응형
'Knowledge' 카테고리의 다른 글
함수형 프로그래밍이란? (0) | 2024.04.03 |
---|---|
네이밍 규칙 Camel / Snake / Pascal / Kebab (0) | 2024.02.28 |