본문 바로가기
알고리즘

1) Queue 큐와 Stack 스택

by 김긍수 2021. 2. 22.

Visualgo 사이트에서 시연해보며 이해하기

 

1) Queue 큐

1. 큐의 구조 

가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조

FIFO 또는 LILO 방식이다.

 

2. 알아둘 용어

Enqueue : 큐에 데이터를 넣는 기능

Dequeue : 큐에서 데이터를 꺼내는 기능

 

3. 자바 라이브러리 활용해서 큐 자료구조 사용하기

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

Queue<Integer> intQueue = new LinkedList<>();

큐 데이터 넣기

  • add(), offer()

큐 데이터 삭제 및 참고

  • poll() : 첫번째 값을 제거하고 큐가 비어있다면 null 반환
  • remove() : 첫번째 값을 제거한다.
  • clear() : 초기화
  • peek() : 첫번째 값 출력

4. 프로그래밍 연습(enqueue, dequeue 기능 구현해보기)

 

 

2) Stack 스택

  • 데이터를 제한적으로 접근할 수 있는 구조(한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조)
  • 가장 나중에 쌓인 데이터를 가장 먼저 빼낼 수 있는 데이터 구조

1. 스택의 구조

  • 스택은 LIFO(Last In First Out) 또는 FILO(First In Last Out) 데이터 관리 방식을 따른다.

  • 대표적인 스택의 활용 - 컴퓨터 내부의 프로세스 구조의 함수 동작 방식

  • 주요기능 - push(), pop()

2. 스택구조와 프로세스 스택

  • 스택 구조는 프로세스 실행 구조의 가장 기본 - 함수 호출시 프로세스 실행 구조를 스택과 비교해서 이해 필요

3. 스택의 장단점

장점

  • 구조가 단순해서, 구현이 쉽다.
  • 데이터 저장/읽기 속도가 빠르다

단점 (일반적인 스택 구현 시)

  • 데이터 최대 갯수를 미리 정해야한다.
  • 저장공간의 낭비가 발생할 수 있다. (미리 최대 개수만큼 저장 공간을 확보해야함)

4. 자바 리스트 기능에서 제공하는 메서드로 스택 사용하기

import java.util.Stack;

Stack<Integer> intstack = new Stack<>();

 

5. 프로그래밍 연습 (pop, push 기능 구현)

 

댓글