Search
Duplicate

3. 스택(Stack)

생성일
2022/06/17 06:37
태그
데이터를 제한적으로 접근할 수 있는 구조
한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조
큐 : FIFO 정책
스택 : LIFO 정책
1.
스택 구조
스택은 LIFO(Last in, First Out) 또는 FILO(First in Last Out) 데이터 관리 방식을 따름
대표적인 스택의 활용
컴퓨터 내부의 프로세스 구조의 함수 동작 방식
주요 기능
push() : 데이터를 스택에 넣기
pop() : 데이터를 스택에서 꺼내기
2.
자료 구조 스택의 장단점
장점
구조가 단순해서 구현이 쉽다
데이터 저장/읽기 속도가 빠르다.
단점
데이터 최대 갯수를 미리 알아야한다.
저장 공간의 낭비가 발생할 수 있음
미리 최대 갯수만큼 저장 공간을 확보해야 하므로
스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임.
이 경우, 위에서 열거한 단점이 있을 수 있음.
3.
자바에서 스택 자료 구조 사용하기
자료구조와 알고리즘은 주요 개념을 이해하고, 알고리즘은 변수, 조건, 반복문으로 직접 구현 할 수 있어야 한다.
각 언어별로 이미 작성된 자료구조/알고리즘 , 함수/클래스를 익히는 것은 본 강의의 목적과는 다르지만, 참고로 설명드리는 것
JAVA Stack 클래스
java.util 패키지에서 Stack 클래스 제공
push(아이템) 메서드 : 아이템을 Stack에 추가
pop() 메서드 : Stack에서 마지막에 넣은 아이템을 리턴하고, 해당 아이템은 Stack에서 삭제
// java.util.Stack 클래스 임포트 import java.util.Stack; // 자료형 매개변수를 넣어서, 스택에 들어갈 데이터의 타입을 지정해야 함 Stack<Integer> stack_int = new Stack<Integer>(); // Integer 형 스택 선언
Java
복사
stack_int.push(1); // Stack 에 1 추가 stack_int.push(2); // Stack 에 2 추가 stack_int.push(3); // Stack 에 3 추가 (출력에 나온 부분은 push() 성공시, 해당 아이템을 리턴해주기 때문임)
Java
복사
stack_int.pop(); // Stack 에서 데이터 추출 (마지막에 넣은 3이 출력)
Java
복사
stack_int.pop(); // Stack 에서 데이터 추출 (현재 Stack 에 있는 데이터 중, 가장 나중에 넣어진 데이터 출력)
Java
복사