728x90

Stack

  • 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 후입선출 구조
  • 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함 
  • 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임
  • 그래프의 깊이 우선 탐색(DFS)에서 사용
  • 재귀적(Recursion) 함수를 호출 할 때 사용

출처 TCP SCHOOL

 

Stack 선언

import java.util.Stack; //import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack<String> stack = new Stack<>(); //char형 스택 선언

 

Stack Method

메소드 설명
boolean empty() 해당 스택이 비어 있으면 true를, 비어 있지 않으면 false를 반환.
E peek() 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환.
E pop() 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환하고, 해당 요소를 스택에서 제거.
E push(E item) 해당 스택의 제일 상단에 전달된 요소를 삽입.
int search(Object o) 해당 스택에서 전달된 객체가 존재하는 위치의 인덱스를 반환.
이때 인덱스는 제일 상단에 있는(제일 마지막으로 저장된) 요소의 위치부터 0이 아닌 1부터 시작.

 

Stack 예제

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.size();      // stack의 크기 출력 : 2
stack.peek();     // stack의 가장 상단의 값 출력
stack.pop();       // stack에 값 제거
stack.clear();     // stack의 전체 값 제거 (초기화)
stack.empty();     // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)

 

728x90

+ Recent posts