JAVA 는 정적 배열 을 바탕 으로 스 택 의 기본 원리 와 용법 에 대한 상세 한 설명 을 실현 합 니 다.

본 논문 의 사례 는 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
자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기