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 기능 구현)
'알고리즘' 카테고리의 다른 글
1주차 : 스택, 큐, 우선순위큐, 힙 java 정리 (0) | 2021.02.26 |
---|---|
Deque 덱 (0) | 2021.02.26 |
힙 Heap : 배열을 이용해 구현한 우선순위큐, 전위순회 (0) | 2021.02.25 |
시간 복잡도 : 알고리즘 복잡도 표현 방법 (0) | 2021.02.23 |
2) Linked List 링크드리스트 (0) | 2021.02.22 |
댓글