728x90
반응형
2022.04.21
92번째 포스팅
0. Stack?
① 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다.
② 자료를 넣는 것을 '밀어넣는다' 하여 push라고 하고 반대로 넣어둔 자료를 꺼내는 것을 pop이라고 한다.
③ 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 된다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO 구조라고 한다.
1. 선언 및 초기화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package develog;
import java.util.Stack;
public class Develog {
public static void main(String[] args) {
/*
* 스택의 선언 및 초기화
* <>안의 Object에는 사용하고 싶은 클래스 혹은 Wrapper클래스를 적어준다.
*/
Stack<Object> stack = new Stack<>();
}
}
|
cs |
2. 구조
① Stack은 Vector를 상속받은 클래스다.
② Vector는 AbstractList를 상속받았고, List, RandomAccess, Cloneable 인터페이스를 구현한 클래스다.
③ Stack의 최상단에 위치하는 데이터를 top이라고 부른다.
3. 메소드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
package develog;
import java.util.Stack;
public class Develog {
public static void main(String[] args) {
Stack<Object> stack = new Stack<>();
/*
* empty()
* 1. stack이 비어있으면 true를 리턴
* 2. 그 반대의 경우 false를 리턴
*/
stack.empty();
/*
* peek()
* 1. LIFO구조에 맞게 top의 값을 출력
* 2. 단순 출력만 하므로, top의 값을 출력 후 삭제하지 않음
*/
stack.peek();
/*
* pop()
* 1. LIFO구조에 맞게 top의 값을 출력
* 2. 값을 출력하는 동시에 삭제
* 3. top의 값이 변경됨
*/
stack.pop();
/*
* push(Object)
* 1. stack에 값을 입력
* 2. LIFO구조에 맞게 가장 마지막에 입력된 값이 top이 됨
*/
stack.push(new Object());
/*
* clear()
* 1. stack의 값들을 비워줌
* 2. stack의 메모리가 제거되는 것은 아님
* 3. clear() 메소드는 for문을 돌면서 stack의 node와 값들을 차례대로 제거함
* 4. stack에 새로운 값을 입력하고 싶다면 clear() 메소드 대신 new Stack()을 사용하여 인스턴스를 다시 만드는 것이 좋음
*/
stack.clear();
/*
* size();
* 1. stack에 들어있는 값들의 갯수를 리턴
* 2. List 인터페이스를 구현했기 때문에 같은 메소드를 사용함
*/
stack.size();
}
}
|
cs |
728x90
반응형
댓글