스택과 큐

즐겁고치열하게·2022년 11월 14일
0

스택 Stack

스택은 FILO(First in Last Out, 선입후출) 방식으로 작동하는 자료 구조체를 말한다.
자료의 저장과 삭제가 자료구조 한쪽 끝에서 이루어지는 것이 특징이다.

스택의 주요 기능 : 삽입, 제거

삽입

삽입 연산은 스택의 맨 끝(top)에 새로운 자료(요소)를 저장한다.

제거

제거 연산은 스택의 맨 끝(top)에 있는 자료를 출력, 제거한다.

언어별 사용법

자바

import java.util.Stack; //import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack<String> stack = new Stack<>(); //char형 스택 선언

stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.push(3);     // stack에 값 3 추가

stack.peek();     // stack의 가장 상단의 값 출력 (제거 X)
# 1
stack.pop();       // stack에 값 반환 후 제거
# 2 제거
stack.clear();     // stack의 전체 값 제거 (초기화)
# 3 제거 (전체 제거)

파이썬

stack = list()

data = 1
# 삽입
stack.append(data)

# 출력
print(stack.pop())
# 혹은 
print(stack[-1])
del stack[-1]

파이썬에서는 list 혹은 deque를 스택으로 사용한다.
list와 deque의 append/pop 성능은 유의미한 차이가 없으므로 스택의 경우에는 list를 사용해도 무방하다.

큐 Queue

큐는 FIFO(First in First Out, 선입선출) 방식으로 작동하는 자료 구조체를 말한다.

큐의 주요 기능 : 삽입, 제거

큐의 가장 앞의 요소를 front(left), 마지막 요소를 rear(right)라고 한다면 큐의 삽입(Enqueue)는 후단에서, 큐의 제거(Dequeue)는 전단에서 수행된다

삽입

제거

언어별 사용법

자바


import java.util.LinkedList; //import
import java.util.Queue; //import

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용

queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가

queue.peek();       // queue의 첫번째 값 참조 (제거, 삭제 X)
# 1
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
# 1 반환, 제거
queue.remove();     // queue에 첫번째 값 제거
# 2 반환, 제거, 자료가 없으면 NoSuchElementException 반환
queue.clear();      // queue 초기화
# 3 제거 (전부 제거)

파이썬

from collections import deque

queue = deque()

queue.append(1)
queue.append(2)

data = queue.popleft()
# 1
data = queue.popleft()
# 2
profile
기술을 공부하는 기술자

0개의 댓글