일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Spring MVC
- git workflow
- Spring 예외처리
- Spring
- file i/o
- set-version
- custom exception
- ubuntu passwd
- git 설정
- O(log n)
- 스키마 디자인
- RestControllerAdvice
- ubuntu 패스워드
- 리눅스 사용권한
- 배열 탐색
- REST HTTP API
- 코드스테이츠
- ubuntu
- http 응답코드
- N:N
- 탐욕 알고리즘
- root passwd
- 자료구조
- mapstruct
- JAVA 재귀함수
- 함수형 인터페이스
- AOP
- Java
- 스키마 설계
- char to int
Archives
- Today
- Total
개발소설
[자료구조] Stack 본문
Stack
- 데이터를 순서대로 쌓는 자료구조
- 후입 선출 구조 이다. - LIFO(Last In First Out), FILO(First In Last Out)
- 가장 먼저 입력한 데이터가 가장 마지막의 출력이 된다.
- 데이터의 입출력 방향이 같다.
- 데이터를 하나씩 입력하고 하나씩 빼야 한다. - 여러개의 데이터를 동시에 처리 할 수 없다.
- 현실에서 프링글스통을 생각하면 된다. - 포장시 가장 먼저 넣었던 과자를 가장 마지막에 뺀다.
- 스택에 데이터를 입력하는 것을 PUSH, 데이터를 꺼내는것을 POP이라고 한다.
JAVA에서 Stack
- 자바에서 클래스로 제공한다.
import java.util.*;
// stack 생성
Stack<String> stack = new Stack<>();
// stack 입력
stack.push("first data");
stack.push("second data");
stack.push("third data");
System.out.println("----------------------");
System.out.println("stack 입력후");
System.out.println(stack);
// stack 삭제, 마지막에 입력한 데이터가 삭제 된다.
stack.pop();
System.out.println("----------------------");
System.out.println("stack 삭제후");
System.out.println(stack);
System.out.println("마지막에 입력한 데이터가 삭제 된다.");
// 가장상단값 출력, 마지막에 넣은 데이터
System.out.println("----------------------");
System.out.println("가장 상단값");
System.out.println(stack.peek());
// stack (크기)사이즈 출력
System.out.println("----------------------");
System.out.println("stack 사이즈");
System.out.println(stack.size());
// stack이 비어있는지 체크 boolean 타입
System.out.println("----------------------");
System.out.println("stack이 비어 있나요?");
System.out.println(stack.isEmpty());
// stack내 해당 데이터가 있는지 체크
System.out.println("----------------------");
System.out.println("해당 데이터가 stack 안에 있나요?");
System.out.println(stack.contains("second data"));
// stack 비우기 -> 전부삭제
System.out.println("----------------------");
System.out.println("stack 비우기 이후");
stack.clear(); // 전부 삭제
System.out.println(stack); // 스택 출력
System.out.println(stack.isEmpty()); // 스택이 비어있는지 체크
/*
stack 입력후
[first data, second data, third data]
----------------------
stack 삭제후
[first data, second data]
마지막에 입력한 데이터가 삭제 된다.
----------------------
가장 상단값
second data
----------------------
stack 사이즈
2
----------------------
stack이 비어 있나요?
false
----------------------
해당 데이터가 stack 안에 있나요?
true
----------------------
stack 비우기 이후
[]
true
*/
JAVA로 Stack 구현
import java.util.*;
public class StackEX {
// ArrayList로 구현
private ArrayList<Integer> listStack = new ArrayList<Integer>();
// 데이터 입력
public void push(Integer data) {
listStack.add(data);
}
// 데이터 출력
public Integer pop() {
if(listStack.size() == 0) {
return null;
}else {
return listStack.remove(listStack.size()-1);
}
}
// 데이터 사이즈 반환
public int size() {
return listStack.size();
}
// 가장 상단 데이터, 마지막에 입력한 데이터 반환
public Integer peek() {
if(listStack.size() == 0) {
return null;
}else {
return listStack.get(listStack.size()-1);
}
}
// 스택을 문자열(String)으로 반환
public String show() {
return listStack.toString();
}
public void clear() { listStack.clear(); }
}
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 그래프 탐색 BFS / DFS (0) | 2023.03.20 |
---|---|
[자료구조] BST(Binary Search Tree) (0) | 2023.03.20 |
[자료구조] Graph (0) | 2023.03.20 |
[자료구조] Tree (0) | 2023.03.19 |
[자료구조] Queue (0) | 2023.03.17 |
Comments