JAVA
자료구조 - 스택(Stack)
상상날개
2022. 5. 26. 15:34
1. 스택(Stack)
- Stack는 쌓다, 포개지다 의 뜻을 가진 단어로 데이터를 순서대로 앃는 자료구조이다
- LIFO(Last In First Out) 또는 FILO(First In Last Out) 구조라고 한다
- 가장 먼저 저장한 데이터가 가장 나중에 나가는 구조
- 순차적으로 추가되고 순차적으로 삭제되는 구조
- 배열에 적용하기에 적합하다
- 저장과 추출이 하나의 통로로 이루어지는 제한적 접근 구조이다
- 데이터 저장을 PUSH , 데이터 추출을 POP 라고 한다
- 한번에 여러개의 데이터를 저장하거나 추출할 수 없다
- 웹페이지의 뒤로 가기, 앞으로 가기 등의 기능에 사용된다
- 0번 데이터부터 한방향으로 저장된다
- 마지막에 저장된 5번 데이터부터 추출된다
2. 스택 선언
- Stack<Element> stack = new Stack<>(); 의 형식으로 선언한다
- Stack을 적용하기 위하여 import java.util.Stack 으로 Stack을 가져온다
package stack;
import java.util.Stack;
public class Lifo {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(0);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
}
}
3. 스택 메서드
method | explanation |
empty(); | Stack이 비어있는지 확인한다 |
peek(); | Stack의 맨 위에 저장된 데이터를 반환하지만 추출하지는 않는다 |
pop(); | Stack의 저장된 데이터를 추출(삭제)한다 |
push(); | Stack에 데이터를 저장한다 |
int search(); | Stack에서 주어진 데이터의 저장된 순서를 확인한다 |
package stack;
import java.util.Stack;
public class Lifo {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(0);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
// stack.peek(); //stack 맨 위의 값 출력
// stack.pop(); //값 제거
// stack.clear(); //stack 전체 값 제거
// stack.size(); //stack 크기 출력
// stack.empty(); //stack이 비어있는지 확인(비었으면 true 출력)
// stack.contains(3) //stack 값 중에 3의 값이 있는지 확인(있으면 true)
System.out.println(stack.pop());
}
}
※ 참조
https://docs.oracle.com/javase/7/docs/api/
Java Platform SE 7
docs.oracle.com
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
ArrayList (Java Platform SE 8 )
Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is
docs.oracle.com