•
데이터를 제한적으로 접근할 수 있는 구조
◦
한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
◦
가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조
▪
큐 : 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
복사