본문 바로가기
기타

[자료구조 기초] (1) 배열, Queue, Stack, Linked List

by 발담그는블로그 2021. 5. 30.

배열

- 같은 타입의 변수들로 이루어진 집합
- 같은 종류의 데이터를 효율적으로 관리하기 위해 사용
- index를 통해 빠른 접근 가능 (하지만 데이터 추가, 삭제가 어렵고 길이를 미리 지정해야함)

Queue

- 한쪽 끝에서는 삽입, 다른 한쪽 끝에서는 삭제 연산만 이루어지는 유한 순서 리스트
- 보통은 FIFO 형태
- 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 ㅜ이해 사용됨

import queue

# 일반 Queue 만들기
data_queue = queue.Queue()	# queue 지정
data_queue.put("1번째")	  # queue에 값 넣기
data_queue.get()			# queue에서 값 빼기

# Priority Queue 만들기
data_priority_queue = queue.PriorityQueue()
data_priority_queue.put((10, "korea"))
data_priority_queue.put((5, 1))
data_priority_queue.put((10, 2))
data_priority_queue.get() # Priority가 5인 것 get 

 

Stack

- 한쪽 끝에서만 자료를 넣고 뺄 수 있음
- LIFO랑 똑같은 형태
- 데이터를 제한적으로 접근할 수 있음 (책상에 쌓여져있는 책 생각하면 됨)
- 가장 대표적인 활용: 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- 스택 구조는 프로세스 실행 구조의 가장 기본
- 구조가 단순해서 구현이 쉽고 저장/읽기 속도가 빠르지만, 데이터 최대 갯수를 미리 정해야되서 저장 공간의 낭비가 발생할 수 있음

Linked List

- 미리 특정 공간 사이즈를 지정해야하는 리스트와는 달리, 링크드 리스트는 필요할때마다 데이터를 추가추가할 수 있다.
- 노드 하나에 데이터와, 데이터의 주소가 저장되어 있음

 

반응형