スタック、キュー、インデックス
6240 ワード
スタック
「後入先出」(Last In First Out,LIFO)形式のデータ構造

スタックのサイズを超えるとオーバーフローし、データがない場合はデータがポップアップされてアクセスされるためunderflowが発生するため、実装時に例外処理が必要です.
キュー

インデックス(Deque)

Pythonでの使用
'''
파이썬에서는 list를 이용하여 쉽게 스택을 구현 할 수 있으며
실제 사용시에는 collections에 구현되어 있는 deque를 이용하면 더 빠름
from collections import deque
dq = deque()
# 스택으로 사용시
dq.append() # 가장 오른쪽에 추가
dq.pop() # 가장 오른쪽 원소 삭제 및 반환
# 큐로 사용시
dq.append() # 가장 오른쪽에 추가
dq.popleft() # 가장 왼쪽 원소 삭제 및 반환
'''
stack = []
stack.append(1) # push
stack.append(2)
stack.pop() # pop, 2
stack[-1] # top, 1
len(stack) # size, 1
'''
stack과 마찬가지로 파이썬에서는 list를 이용하여 쉽게 구현 할 수 있다.
하지만 이 또한 deque를 사용하는 것이 빠르고 쉽다.
from collections import deque
dq = deque()
# 스택으로 사용시
dq.append() # 가장 오른쪽에 추가
dq.pop() # 가장 오른쪽 원소 삭제 및 반환
# 큐로 사용시
dq.append() # 가장 오른쪽에 추가
dq.popleft() # 가장 왼쪽 원소 삭제 및 반환
'''
queue = []
queue.append(1) # 가장 오른쪽에 원소 추가 push
queue.append(2) # 가장 오른쪽에 원소 추가 push
queue.pop(0) # 가장 왼쪽 원소 삭제 및 반환, pop, 1
len(queue) # size 및 empty 판단
queue[0] # 제일 앞의 원소를 읽기, getFront
queue[-1] # 제일 마지막의 원소를 읽기, getBack
# python에서는 collections의 deque를 사용하면 된다
from collections import deque
dq = deque()
dq.append(x) # 오른쪽(끝)에 삽입
dq.appendleft(x) # 왼쪽(앞)에 삽입
dq.extend(iterable) # iterable arguments를 오른쪽(끝)에 삽입
dq.extendleft(iterable) # iterable arguments를 왼쪽(앞)에 삽입.
# 'de'를 삽입하면, 'e','d' 순서로 삽입된다
dq.pop() # 오른쪽(끝)에서 제거와 반환
dq.popleft() # 왼쪽(앞)에서 제거와 반환
dq.rotate(n) # n번만큼 elements를 이동시켜주는 method. 양수면 오른쪽으로, 음수면 왼쪽으로 rotate
Reference
Reference
この問題について(スタック、キュー、インデックス), 我々は、より多くの情報をここで見つけました https://velog.io/@kshired/스택-큐-덱テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol