728x90
본 포스트는 python3.7, pycharm환경에서 작성되었습니다.
파이썬에서의 추상데이터타입![2]
지난 시간은 앞서서 스택에 대해서 알아보았습니다. 이번 시간에는 큐에 대해서 알아보도록 하겠습니다.
큐는 스택과 다릅니다. 우선 비교표를 보겠습니다
스택 | 큐 | |
공통점 |
데이터를 담는 추상데이터 타입 배열의 인덱스 엑세스가 제한 |
|
차이점 |
후입선출 방식 |
선입선출 방식 |
위와 같은 특징을 지닙니다. 그렇다면 활용될 수 있는 동작을 알아봅시다.
enqueue() |
큐 항목에 데이터 삽입 |
dequeue() |
큐 맨 앞 항목을 반환하고 제거 |
peek/front() |
큐 맨 앞 항목을 조회 |
empty() |
큐가 공백인지 확인 |
size() |
큐의 크기를 반환 |
그렇다면 코드로 큐를 구현해 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
class Queue(object):
def __init__(self):
self.data = []
def isEmpty(self):
return not bool(self.data)
def enqueue(self,element):
self.data.insert(0,element)
def dequeue(self):
element = self.data.pop()
if(element is not None):
return element
else:
print("큐가 비어있습니다.")
def size(self):
return len(self.data)
def peek(self):
if self.data:
return self.data[-1]
else:
print("큐가 비어있습니다")
def __repr__(self):
return repr(self.data)
if __name__ == "__main__":
queue = Queue()
print("큐를 작동시킵니다. 큐 공백 여부 : {0}".format(queue.isEmpty()))
print("숫자 1-9를 삽입합니다")
for i in range(1,10):
queue.enqueue(i)
print(queue)
print("큐를 작동시킵니다. 큐 공백 여부 : {0}".format(queue.isEmpty()))
|
cs |
앞선 스택의 구현과 다르게 insert메서드를 사용했습니다. 만약 그냥 append()리스트 빌트인 함수를 사용하게 되면, 전체적인 요소들의 메모리 이동에 따라 메모리의 누수가 발생합니다. 따라서 지정된 위치에 값을 차곡차곡 넣어주었습니다. 물론 이보다 효율적인 큐의 구현도 가능합니다.
댓글 / 피드백 환영합니다.
궁금하신점 달아주시면 감사합니다.
728x90
'Python' 카테고리의 다른 글
자료구조[1]-STACK(python) (0) | 2020.06.01 |
---|---|
파이썬 리스트 중복제거! (0) | 2020.04.02 |
파이썬에서의 추상데이터타입![1] (0) | 2020.03.02 |
파이썬_객체지향(class,module)[3] (0) | 2020.02.20 |
파이썬_객체지향(class,module)[2] (0) | 2020.02.20 |
댓글