스택(Stack)
스택은 LIFO (Last In, First Out) 구조를 따르는 자료 구조로, 마지막에 삽입된 데이터가 가장 먼저 삭제됩니다. 흔히 사용되는 예시로는 브라우저 히스토리, 재귀 호출 스택 등이 있습니다.
- 기본 연산
- push: 스택의 가장 위에 새로운 요소를 추가합니다.
- pop: 스택의 가장 위에 있는 요소를 제거하고 반환합니다.
- peek: 스택의 가장 위에 있는 요소를 반환하지만 제거하지는 않습니다.
스택 구현 예시 (Python)
class Stack:
def __init__(self):
self.stack = []
# 요소 삽입 (push)
def push(self, item):
self.stack.append(item)
# 요소 제거 (pop)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
return "스택이 비어 있습니다."
# 최상단 요소 확인 (peek)
def peek(self):
if not self.is_empty():
return self.stack[-1]
else:
return "스택이 비어 있습니다."
# 스택이 비어있는지 확인
def is_empty(self):
return len(self.stack) == 0
# 스택 사용 예시
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print("현재 스택:", stack.stack) # 출력: [1, 2, 3]
print("스택 최상단 요소:", stack.peek()) # 출력: 3
print("pop:", stack.pop()) # 출력: 3
print("pop 후 스택:", stack.stack) # 출력: [1, 2]
- push 연산: 스택에 요소를 추가하는 연산으로, 시간 복잡도는 입니다.
- pop 연산: 스택에서 요소를 제거하는 연산으로, 시간 복잡도는 입니다.
큐(Queue)
큐는 FIFO (First In, First Out) 구조를 따르는 자료 구조로, 먼저 들어온 데이터가 먼저 나가는 구조입니다. 프린터 작업 대기열, 프로세스 관리 등이 큐의 대표적인 사용 예입니다.
- 기본 연산
- enqueue: 큐의 끝에 새로운 요소를 추가합니다.
- dequeue: 큐의 앞에서 요소를 제거하고 반환합니다.
- peek: 큐의 앞에 있는 요소를 반환하지만 제거하지는 않습니다.
큐 구현 예시 (Python)
class Queue:
def __init__(self):
self.queue = []
# 요소 삽입 (enqueue)
def enqueue(self, item):
self.queue.append(item)
# 요소 제거 (dequeue)
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0)
else:
return "큐가 비어 있습니다."
# 큐의 앞에 있는 요소 확인 (peek)
def peek(self):
if not self.is_empty():
return self.queue[0]
else:
return "큐가 비어 있습니다."
# 큐가 비어있는지 확인
def is_empty(self):
return len(self.queue) == 0
# 큐 사용 예시
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print("현재 큐:", queue.queue) # 출력: [1, 2, 3]
print("큐의 첫 번째 요소:", queue.peek()) # 출력: 1
print("dequeue:", queue.dequeue()) # 출력: 1
print("dequeue 후 큐:", queue.queue) # 출력: [2, 3]
- enqueue 연산: 큐에 요소를 추가하는 연산으로, 시간 복잡도는 입니다.
- dequeue 연산: 큐에서 요소를 제거하는 연산으로, 시간 복잡도는 입니다.
스택과 큐의 차이점 요약
특성 | 스택 (Stack) | 큐 (Queue) |
---|---|---|
데이터 처리 방식 | LIFO (Last In, First Out) | FIFO (First In, First Out) |
삽입 연산 | push | enqueue |
삭제 연산 | pop | dequeue |
사용 예시 | 브라우저 히스토리, 함수 호출 | 프린터 대기열, 프로세스 관리 |
댓글 없음:
댓글 쓰기