스택(Stack)

이동엽·2023년 9월 8일

1. 스택(Stack)이란?

데이터를 일시적으로 저장하기 위해 사용하는 자료구조이다. 데이터의 입력과 출력 순서는 후입선출(LIFO : Last In First Out)이다. 차곡 차곡 쌓여진 더미를 의미한다고 생각하면 된다.!

2. 스택의 연산

1. 스택 ADT(추상데이터타입)

객체는 n개의 요소(element)들의 선형리스트라 한다.

연산기능
init()스택을 초기화
create()스택을 생성
is_empty()스택이 비어있는지 검사
is_full()스택이 가득 찼는지 검사
push(e)스택의 맨 위에 요소 e 추가
pop(s)스택의 맨 위 요소를 삭제
peek(s)스택의 맨 위 요소를 삭제하지 않고 반환

2. 스택의 연산

연산기능
top()스택 맨 위에 있는 데이터 값 반환
push()스택에 데이터 삽입
pop()스택에서 데이터 삭제하여 반환
isempty()스택에 원소가 없으면 true, 있으면 false 반환
isfull()스택에 원소가 없으면 false, 있으면 true 반환

3. 스택 시간복잡도

연산시간복잡도
삽입(push)O(1) : 맨 위에 데이터를 넣으면 되기 때문
삭제(pop)O(1) : 맨 위에 데이터를 삭제하면 되기 때문
읽기(peek)O(1) : 맨 위의 데이터를 읽으면 되기 때문
탐색(search)O(n) : 맨 위의 데이터부터 하나씩 찾아야 되기 때문

4. 스택 사용법

1. 스택 선언

import java.util.Stack; //import

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack<String> stack = new Stack<>(); //string형 스택 선언
Stack<Charcter> stack = new Stack<>(); //char형 스택 선언

2. 스택 값 추가

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.push(3);     // stack에 값 3 추가

3. 스택 값 삭제

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.push(3);     // stack에 값 3 추가
stack.pop();       // stack에 값 제거
stack.clear();     // stack의 전체 값 제거 (초기화)

4. 스택 가장 상단의 값 출력

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.push(3);     // stack에 값 3 추가
stack.peek();     // stack의 가장 상단의 값 출력

5. 스택의 기타 메소드

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.size();      // stack의 크기 출력 : 2
stack.empty();     // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)

0개의 댓글