Session - Stack & Queue

Sung Jun Jin·2020년 4월 25일
0

위코드 세션 정리

목록 보기
10/12

Stack

LIFO(Last In First Out)의 구조를 가지고 있다. 마지막에 저장한 데이터가 처음으로 읽힌다.
Stack에서의 데이터 저장은 push 데이터를 읽어들이는 것은 pop이라고 한다. pop은 데이터를 읽어들임과 동시에 stack에서 삭제한다.

Stack Python 예제

class Stack:
    def __init__(self):
        self._stack = []        

    def push(self,data):
        self._stack.append(data)

    def pop(self):
        if len(self._stack) == 0:
            return None

        data = self._stack[-1]
        del self._stack[-1]
        return data
    
    def peek(self):
        if len(self._stack) == 0:
            return None
        return self._stack[-1]      

웹 브라우저의 방문기록(뒤로가기), 실행취소등이 stack으로 구현될수 있다.

Queue

FIFO(First In First Out)의 구조를 가지고 있다. 즉, 데이터가 들어온 순서대로 처리된다. 맛집에 늘어선 줄과같이 맨 처음으로 들어온(push) 데이터가 가장 먼저 나간다(pop).

Queue Python 예제

class Queue:
    def __init__(self):
        self.waiting = []

    def is_empty(self):
        return len(self.waiting) == 0      

    def enqueue(self,person):
        self.waiting.append(person)
        print(f"{person}이 대기줄에 추가되었습니다.")

    def dequeue(self):
        if self.is_empty():
            return "대기자 없음!"
        else:
            return self.waiting.pop()

    def front(self):
        if self.is_empty():
            return "대기자 없음!"
        else:
            return self.waiting[-1]
    def print_queue(self):
        print(f"저희 대기 손님은 {self.waiting}으로 총 {len(self.waiting)} 명이 대기중입니다.")        
      

OS 프로세스 스케쥴링 시스템, 밋집 예약 시스템등이 Queue로 구현될수 있다.

profile
주니어 개발쟈🤦‍♂️

0개의 댓글