- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 자료구조 [파이썬으로 구현한 알고리즘] (2) 스택/큐 (Stack/Queue)
2018.02.27 17:44
[파이썬으로 구현한 알고리즘] (2) 스택/큐 (Stack/Queue)
스택(Stack)
스택은 데이타 입/출력이 한쪽으로만 접근 할 수 있는 자료 구조이다. 스택에서 가장 나중에 들어간 데이타가 제일 먼저 나오게 된다. 그래서 스택을 LIFO(Last In First Out) 구조라고 한다.
< 그림 1. 스택 >
스택을 조작하는 동작은 데이타를 넣은 PUSH 동작과 데이타를 빼오는 POP 동작이 있다. PUSH는 스택의 최상단 데이타 위에 새로운 데이타를 쌓는다(stack). POP은 스택의 최상단에 있는 데이타를 빼온다.
< 그림 2. 스택의 PUSH/POP 동작 >
스택은 데이타 입/출력이 한쪽으로만 접근 할 수 있는 자료 구조이다. 스택에서 가장 나중에 들어간 데이타가 제일 먼저 나오게 된다. 그래서 스택을 LIFO(Last In First Out) 구조라고 한다.

스택을 조작하는 동작은 데이타를 넣은 PUSH 동작과 데이타를 빼오는 POP 동작이 있다. PUSH는 스택의 최상단 데이타 위에 새로운 데이타를 쌓는다(stack). POP은 스택의 최상단에 있는 데이타를 빼온다.

파이썬에는 내장 자료형 중에 하나인 리스트형이 스택을 표현하는데 사용된다. 즉, 파이썬에는 스택을 따로 구현할 필요가 없다.
큐(Queue)
큐는 먼저 넣은 데이타가 먼저 나오는 FIFO(First-In-First-Out) 구조로 저장하는 자료구조 이다. 즉, 큐는 LIFO 구조인 스택과 반대되는 개념의 자료 구조이다. 스택은 데이타가 입/출력하는 부분이 한 부분밖에 없다고 한다면, 큐는 양쪽 모두 뚤려있다. 한쪽으로는 데이타를 넣기만 하고, 다른쪽에서는 데이타를 빼내기만 한다. 데이타를 넣는 연산을 PUT 동작, 데이타를 빼내는 동작을 GET 동작이라고 한다.
< 그림 3. 큐의 형태와 PUT/GET 동작 >
< 예제 2. 큐의 생성과 PUT/GET 동작 >
#!/usr/bin/python
def Main():
stack = [] # stack create
stack.append(1) # same PUSH
stack.append(2)
stack.append(3)
stack.append(4)
print stack
while stack:
print "POP >", stack.pop()
Main()
def Main():
stack = [] # stack create
stack.append(1) # same PUSH
stack.append(2)
stack.append(3)
stack.append(4)
print stack
while stack:
print "POP >", stack.pop()
Main()
< 예제 1. 스택 생성과 PUSH/POP 동작 >
큐(Queue)
큐는 먼저 넣은 데이타가 먼저 나오는 FIFO(First-In-First-Out) 구조로 저장하는 자료구조 이다. 즉, 큐는 LIFO 구조인 스택과 반대되는 개념의 자료 구조이다. 스택은 데이타가 입/출력하는 부분이 한 부분밖에 없다고 한다면, 큐는 양쪽 모두 뚤려있다. 한쪽으로는 데이타를 넣기만 하고, 다른쪽에서는 데이타를 빼내기만 한다. 데이타를 넣는 연산을 PUT 동작, 데이타를 빼내는 동작을 GET 동작이라고 한다.

큐의 구현은 스택과 마찬가지로 리스트형으로 표현 할 수 있다. 파이썬은 프로그래머가 자료 구조에 대해 고민을 덜어 준다. 앞서 다루었던 연결 리스트도 이해를 돕기 위해 class로 구현 하였지만, 리스트형으로 표현 할 수 있다. 리스트형 하나만으로도 C언어의 배열과 연결 리스트, 스택, 큐를 표현 할 수 있으니, 파이썬은 대부분의 경우 자료 구조를 따로 구성 할 필요가 없다. 이런 이유로 파이썬은 프로그래머에게 프로그램 로직에만 집중할 수 있게 해준다.
#!/usr/bin/python
def Main():
queue = [] # queue create
queue.append(1) # same PUT
queue.append(2)
queue.append(3)
queue.append(4)
print queue
while queue:
print "GET > ",queue.pop(0) # same GET
Main()
def Main():
queue = [] # queue create
queue.append(1) # same PUT
queue.append(2)
queue.append(3)
queue.append(4)
print queue
while queue:
print "GET > ",queue.pop(0) # same GET
Main()
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 2 |
[pySide] [번역] PySide6 - 시그널, 슬롯 & 이벤트
| 졸리운_곰 | 2023.12.27 | 320 |
| 1 |
[pySide] [번역] PySide6로 첫 번째 앱 만들기 !
| 졸리운_곰 | 2023.12.27 | 546 |

