일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 토비의 스프링
- 생성자주입
- 그래프큐엘
- Atomicity
- kotlin ::
- 스프링
- 스프링 포매터
- 스프링di
- 기능적 요구사항
- 스프링시큐리티
- Spring
- 도커 이미지 빌드
- java predicate
- 정적팩토리메서드
- 수정자주입
- IOC
- 자바 필터
- 비기능적 요구사항
- 스프링부트 도커
- 동적파라미터
- jpa no session
- open-session-in-view
- spring formatter
- fetch join
- kotlin 리팩터링
- method refetence
- 소프트웨어의 품격
- jpa lazy
- 스프링 시큐리티 설정
- ioc컨테이너
Archives
- Today
- Total
공부기록
[자료구조] 스택 본문
반응형
스택
- 한 쪽 끝에서만 자료를 넣고, 뺄 수 있는 자료구조다.
- Push로 데이터를 집어넣고, Pop으로 데이터를 빼낸다.
- 그림 상으로는 스택의 각 인덱스에 있는 데이터를 알 수 있지만, 사실상 제일 위에 있는 데이터만 알 수 있는 자료구조다. 보통 제일 위에 있는 데이터를 top라고 한다.
스택의 구현
- 일차원 배열 하나로 구현이 가능하다.
public class Stack<T> {
private T[] data;
private int size;
@SuppressWarnings("unchecked")
public Stack(int capacity) {
data = (T[])new Object[capacity];
size = 0;
}
public Stack() {
this(10);
}
public void push(T data) {
this.data[size++] = data;
}
public T pop() {
return this.data[--size];
}
public int getSize() {
return size;
}
}
- 1차원 배열 data와, stack의 크기를 알려주는 size를 선언했다.
- 사용자는 스택의 최대 크기를 지정할 수 있다. 만약 최대 크기를 정해주지 않는다면 최대크기는 default 10이다
- 앞서 말한 것처럼 push로 데이터를 저장할 수 있다.
- 예를 들어 처음
push(10)
을 한다면data[0]
에10
이 저장된다. - 후위연산자로 식을 수행한 뒤 size + 1이 된다
- 예를 들어 처음
- 앞서 말한 것처럼 pop으로 데이터를 빼낼 수 있다.
- 예를 들어 배열에
[3,1,6]
이와 같은 값이 저장돼있다면,pop()
을 수행할 시 맨 마지막 값인 6을 반환한다. - 현재 size는 3이기 때문에
data[3]
은 null이다. 따라서 전위연산자로 식을 수행하기 전 size - 1을 한 뒤 값을 빼낸다
- 예를 들어 배열에
반응형
'Computer Science > 자료구조' 카테고리의 다른 글
이진 탐색(binary search) (0) | 2024.12.23 |
---|---|
[HashTable] JAVA로 간단히 구현해보며 HashTable을 알아보자! (1) | 2020.06.27 |
합병정렬 (0) | 2020.01.12 |
기본적인 정렬(선택정렬, 버블정렬, 삽입정렬) (0) | 2020.01.12 |
ArrayList의 add(T t)와 addAll(Collection<? extends T> collection)을 구현해보자. (0) | 2019.10.09 |