Study/Data Structures

내장함수 사용하지 않은 파이썬으로 구현한 스택과 큐

MuviSsum 2020. 11. 4. 21:43

스택과 큐를 간단하게 구현해봤습니다.

당연히 있는 내장함수를 쓴다면 효율이 좋지만,

만들 수도 있어야한다고 생각합니다.

큐의 경우는 scale만큼 사용하면 더 이상 못쓰기 때문에

주소값을 이어주는 형태를 만들어 주면 좋지만

큐의 성질을 알아보려는 구현 방법이기 때문에 이렇게 만들었습니다.

 

# 스택!
class Stack :
    def __init__(self, scale = 200):
        self.s = [0] * scale
        self.top = -1

    def is_empty(self):
        if self.top == -1 :
            return 1
        else:
            return 0

    def pop(self):
        if self.is_empty() :
            print("스택 안에 데이터가 없습니다.")
            return 0
        else :
            self.top -= 1
            return self.s[self.top+1]

    def push(self, data):
        self.top += 1
        self.s[self.top] = data


# 큐!
class Queue :
    def __init__(self, scale = 2000):
        self.q = [0] * scale
        self.front = 0
        self.back = 0

    def is_empty(self):
        if self.front == self.back :
            return 1
        else:
            return 0

    def pop(self):
        if self.is_empty() :
            print("큐 안에 데이터가 없습니다.")
            return 0
        else :
            self.front += 1
            return self.q[self.front-1]

    def push(self, data):
        self.back += 1
        self.q[self.back-1] = data

 

큐를 더 좋게 만들려면 그냥 아예 node를 만들고 그것을 이어주는

주소 값을 포함한 노드를 만들어 주어야합니다.

node 양쪽으로 주소값을 이어서 scale만큼의 queue를 구현할 수 있습니다.

연결리스트라고하고 순환적으로 이어지죠 ㅎㅎ

이것을 원형 연결 리스트라고 합니다.

이것을 이용해 제대로 된 큐를 구현할 수 있으니까 한번 도전해 보세요!!

 

Photo by Henry & Co. on Unsplash

반응형

'Study > Data Structures' 카테고리의 다른 글

[Python] Node부터 구현한 큐, 스택  (0) 2021.05.26