Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동인천 맛집
- 샤로수길 맛집
- 닥스훈트
- 강아지 홀리스틱
- 티켓팅매크로
- 자동화봇
- 홀리스틱 유기농
- 반려견 유기농
- 쿠팡매크로
- 반려견
- 반려견 열사병
- 샤로수길 데이트
- 티켓팅메크로
- 서울대입구 맛집
- 부산 맛집
- 반려견 유기농 사료
- 강아지
- 쿠팡메크로
- 강아지 유기농
- 반려견 홀리스틱
- 강아지 열사병
- 신포동 맛집
- 강아지 더위
- 반려견 더위
- 강아지 유기농 사료
- 강아지 종류
- 반려견 종류
- 반려견 사료등급
- 강아지종류
- 국비지원 예습
Archives
- Today
- Total
심심한잉여의 잡동사니
[자료구조] 스택(Stack)이란?(feat. Java) 본문
반응형
스택은 쌓다라는 의미를 가지고 있으며
많이 알려진 것으론 LIFO(선입후출)라고 한다.
먼저 들어온 데이터가 늦게 나가는 구조이기 때문이다.
그리고 JAVA에서는 Stack클래스를 기본적으로 지원해주고 있다.
Stack<Element> stack = new Stack<>();
위 코드와 같이 선언이 가능하다.
지원하는 메소드로는
- push() : 스택에 데이터 입력
- pop() : 스택에 제일 늦게 들어온 데이터를 반환 후 스택에서 제거
- peek() : 스택에 제일 늦게 들어온 데이터를 반환
- empty() : 스택에서 찾는 값의 인덱스 반환
- search() : 스택이 비어있는지 확인
위 메소드들이 기본 제공이 된다.
이를 Java List를 이용해서 구현을 해보겠다.
// list 생성 후 스택처럼 사용하기
List<Object> stack = new ArrayList<>();
// 메소드 영역
public Object pop(){
int top = stack.lenth()-1;
int result = stack.get(top);
stack.remove(top);
return result;
}
public void push(Object obj){
stack.add(obj);
}
public Object peek(){
return stack.get(stack.lenth()-1);
}
public int search(Object obj){
for(int i = 0; i<stack.length();i++){
if(stack.get(i) == obj){
return i;
}
}
return -1;
}
public boolean empty(){
if(stack == null || stack.length() == 0){
return true;
}
return false;
}
이를 통해 대충 스택은 어떻게 동작되는지 어렴풋이 알 수 있을 것이다.
하지만 스택의 경우 값을 뺏다 넣었다가 반복되기 때문에 수정이 빈번하다.
이를 통해 ArrayList보다는 LinkedList가 더 어울릴 것으로 보이니 LinkedList로 바꿔서 구현하는게 더 좋을 것 같다.
반응형
'코딩일기 > 자료 구조' 카테고리의 다른 글
[디자인 패턴] 싱글톤 패턴(Singleton)이란? (0) | 2022.11.28 |
---|---|
[디자인 패턴] 디자인 패턴이란 (0) | 2022.11.10 |
[자료구조] 큐(Queue) (feat. java) (0) | 2022.05.01 |
[자료구조] 링크드리스트(LinkedList) (feat.Java예제) (0) | 2022.04.29 |
[자료구조] 자료구조란? (0) | 2022.04.27 |