이번에 면접에서 스택을 파이썬으로 구현하려다가...
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())
반응형
'Study > Data Structures' 카테고리의 다른 글
내장함수 사용하지 않은 파이썬으로 구현한 스택과 큐 (0) | 2020.11.04 |
---|