스택과 큐를 간단하게 구현해봤습니다.
당연히 있는 내장함수를 쓴다면 효율이 좋지만,
만들 수도 있어야한다고 생각합니다.
큐의 경우는 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 |
---|