개발/자료구조

[자료구조] Stack(스택), Queue(큐)

donggyu 2022. 8. 27. 02:01
반응형

Stack

선형 자료구조의 일종으로 Last In First Out (LIFO)  - 나중에 들어간 원소가 먼저 나온다. 또는 First In Last Out (FILO)  - 먼저 들어간 원소가 나중에 나온다. 이것은 Stack 의 가장 큰 특징이다.

파이썬의 경우 LIST를 활용하여 간단히 구현이 가능하다.

 

class Stack():
    def __init__(self):
        self.stack = []
        
    def push(self, data):
        self.stack.append(data)
        
    def pop(self):
        pop_object = None
        if self.isEmpty():
            print("Stack is Empty")
        else:
            pop_object = self.stack.pop()
            
        return pop_object
            
    def top(self):
        top_object = None
        if self.isEmpty():
            print("Stack is Empty")
        else:
            top_object = self.stack[-1]
            
        return top_object
            
            
    def isEmpty(self):
        is_empty = False
        if len(self.stack) == 0:
            is_empty = True
        return is_empty

 

Queue

선형 자료구조의 일종으로 First In First Out (FIFO).

즉, 먼저 들어간 놈이 먼저 나온다. Stack 과는 반대로 먼저 들어간 놈이 맨 앞에서 대기하고 있다가 먼저 나오게 되는 구조이다.

파이썬의 경우 LIST를 활용하여 간단히 구현이 가능하다.

 

class Queue():
    def __init__(self):
        self.queue = []
        
    def enqueue(self, data):
        self.queue.append(data)
        
    def dequeue(self):
        dequeue_object = None
        if self.isEmpty():
            print("Queue is Empty")
        else:
            dequeue_object = self.queue[0]
            self.queue = self.queue[1:]
            
        return dequeue_object
            
    def peek(self):
        peek_object = None
        if self.isEmpty():
            print("Queue is Empty")
        else:
            peek_object = self.queue[0]
            
        return peek_object
            
    def isEmpty(self):
        is_empty = False
        if len(self.queue) == 0:
            is_empty = True
        return is_empty
반응형