JAVA 는 정적 배열 을 바탕 으로 스 택 의 기본 원리 와 용법 에 대한 상세 한 설명 을 실현 합 니 다.
1.창고 의 정의
스 택 은'선진 후 출'의 선형 데이터 구조 로 스 택 에서 나 오 는 두 가지 조작 방식 이 있다.다음 그림:
2.창고 의 분류
창 고 는 주로 두 종류 로 나 뉜 다.
정적 스 택
동적 스 택
[정적 스 택]
정적 스 택 의 핵심 은 배열 입 니 다.연속 메모리 와 유사 한 배열 입 니 다.우 리 는 스 택 꼭대기 요 소 를 조작 할 수 밖 에 없습니다.
[동적 스 택]
정적 스 택 의 핵심 은 배열 입 니 다.연속 메모리 와 유사 한 배열 입 니 다.우 리 는 스 택 꼭대기 노드 만 조작 할 수 있 습 니 다.
이 절 에서 우 리 는 이전에 포 장 된 동적 배열 을 바탕 으로(포 장 된 동적 배열 참조)기본 적 인 스 택 작업 을 실현 합 니 다.
3.창고 실현
1.먼저 인터페이스 Stack 을 정의 합 니 다.관련 스 택 의 기본 동작 을 포함 합 니 다.
package Stack;
public interface Stack<E> {
//
int getSize();
//
boolean isEmpty();
//
void push(E e);
//
E pop();
//
E peek();
}
2.ArrayStack 클래스 구현 인터페이스 만 들 기
package Stack;
import Array.DynamicArray;
public class ArrayStack<E> implements Stack<E> {
DynamicArray<E> array;
// , capacity
public ArrayStack(int capacity) {
array = new DynamicArray<E>(capacity);
}
// , capacity=10
public ArrayStack() {
array = new DynamicArray<E>();
}
//
@Override
public int getSize() {
return array.getSize();
}
//
@Override
public boolean isEmpty() {
return array.isEmpty();
}
//
public int getCapacity() {
return array.getCapacity();
}
//
@Override
public void push(E e) {
array.addLast(e);
}
//
@Override
public E pop() {
return array.removeLast();
}
//
@Override
public E peek() {
return array.getLast();
}
// object toString
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Stack:");
res.append('[');
for (int i = 0; i < array.getSize(); i++) {
res.append(array.get(i));
if (i != array.getSize() - 1) {
res.append(",");
}
}
res.append("] top");//
return res.toString();
}
}
3.스 택 작업 이 올 바른 지 테스트주 함 수 를 포함 하 는 새로운 클래스
(1)스 택 작업
package Stack;
public class TestMain {
public static void main(String[] args) {
ArrayStack<Integer> stack = new ArrayStack<Integer>();
for (int i = 0; i < 5; i++) {
stack.push(i);
System.out.println(stack);
}
}
}
결 과 는:(2)스 택 작업
System.out.println(" ");
stack.pop();
System.out.println(stack);
결 과 는:4.창고 의 복잡 도 분석
우리 가 동태 배열 의 복잡 도 분석 에 관 한 지식 을 가지 게 되 었 고 이곳 의 스 택 은 동태 배열 을 바탕 으로 이 루어 진 것 이 며 복잡 도의 분석 방식 은 일치 하 다.
GitHub 소스 주소https://github.com/FelixBin/dataStructure/tree/master/out/test/structure/Stack
자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.