Study/Data Structures

[Python] Node부터 구현한 큐, 스택

MuviSsum 2021. 5. 26. 15:09

이번에 면접에서 스택을 파이썬으로 구현하려다가...

Node부터 구현하는 기초적인 부분을 처음부터 못 하겠더라구요.

Class도 잘 사용하지 않아서 __init__도 생각나지 않고, self도 생각나지 않았습니다.

반성하는 마음으로 큐와 스택을 Node부터 구현해 보았습니다.

이번 면접보고 되게 많이 배운 것 같습니다.

제가 답을 못 해서 그렇지 뭐...^^

 

기본적인 부분만 구현한 큐와 스택입니다.

 

큐 코드:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class Queue:
    def __init__(self):
        self.tail = None
        self.head = None
        self.count = 0

    def is_empty(self):
        if self.count == 0:
            return True
        else:
            return False

    def push(self, node):
        if self.is_empty():
            self.head = node
            self.tail = node
        else:
            self.tail.next = node
            self.tail = node
        self.count += 1

    def pop(self):
        if self.is_empty():
            return "더 이상 큐의 데이터가 없습니다."
        else:
            node = self.head
            self.head = node.next
            self.count -= 1
            return node.data


# 확인
q = Queue()
q.push(Node(10))
q.push(Node(20))
q.push(Node(30))
print(q.pop())
print(q.pop())
print(q.pop())
print(q.pop())

 

스택 코드:

class Node:
    def __init__(self, data):
        self.data = data
        self.before = None


class Stack:
    def __init__(self):
        self.head = None
        self.count = 0

    def is_empty(self):
        if self.count == 0:
            return True
        else:
            return False

    def push(self, node):
        if self.is_empty():
            self.head = node
        else:
            node.before = self.head
            self.head = node
        self.count += 1

    def pop(self):
        if self.is_empty():
            return "더 이상 스택의 데이터가 없습니다."
        else:
            node = self.head
            self.head = node.before
            self.count -= 1
            return node.data


# 확인
s = Stack()
s.push(Node(10))
s.push(Node(20))
s.push(Node(30))
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
반응형