스택과 큐는 프로그래밍에서 데이터를 저장하고 조작하는 데 사용되는 자료구조입니다. 이들은 각각 데이터의 삽입과 삭제 방법의 차이가 있으며, 다양한 상황에서 유용하게 사용됩니다.

 

스택

  • 후입선출(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

+ Recent posts