자바 코드로 창고 데이터 구조를 실현하는 기본 방법 귀납

5827 단어 Java창고
체인 구현:
창고의 한 단락에 요소를 추가하고 삭제하며, 창고에서 창고 꼭대기를 가리키는 결점과 count 변수가 창고의 크기를 표시합니다.
private LinearNode top;//창고 꼭대기를 가리키다
private int count;//창고 크기 표시
매번 창고를 나가고 창고를 눌러 체인 시계의 표두에 놓는다: (다시 표미할 수도 있고, 실현 방식은 다를 뿐이다)
top----> 요소 1---> 요소 2---> 요소 3...
구현(테스트 main 포함):
LinkedStack

package Stack;
import Bag.LinearNode;
// , , 
public class LinkedStack implements StackADT {
  private LinearNode top; // 
  private int count;// 
  public static void main(String[] args){
    LinkedStack stack = new LinkedStack();
    System.out.println(" 0 10 ");
    for(int i = 0;i < 10;i++)
      stack.push(i);
    System.out.println(" 5 ");
    for(int i = 0;i < 5;i++)
      stack.pop();
    System.out.println(" ?: " + stack.isEmpty());
    System.out.println(" : " + stack.size());
    System.out.println(" : " + stack.top.getElement());
    System.out.println(" : " + stack.peek());  
  }
  public LinkedStack()
  {
    top = null;
    count = 0;
  }
  public int size() {
    return count;
  }
  public boolean isEmpty() {
    return (size() == 0);
  }
  public void push(Object element) {
    LinearNode node = new LinearNode(element);
    node.setNext(top);
    top = node;
    count++;
  }
  public Object pop() {
    if(isEmpty())
    {
      System.out.println("stack is empty!");
      System.exit(1);
    }
    Object result = top.getElement();
    top = top.getNext();
    count--;
    return result;
  }
  public Object peek() {
    Object result = top.getElement();
    return result;
  }
}
실행 결과:
0부터 10까지 순차적으로 창고를 압수하다
연속 5 회 아웃바운드 작업 수행
창고가 비어 있습니까?false
창고 크기: 5
스택 상단 요소: 4
스택 상단 요소: 4
배열 구현:
창고 밑바닥은 항상 수조 아래에 0이 표시되는 위치입니다. 창고에 들어가는 것은 수조 아래에 표시되는 마지막 요소부터 시작합니다.

private Object[] contents;
private int top;//top , , count !!!
구현(테스트 main 포함):
ArrayStack

package Stack;
public class ArrayStack implements StackADT {
  private Object[] contents;
  private int top;//top , , count !!!
  private static int SIZE = 10;
  public ArrayStack()
  {
    contents = new Object[SIZE];
    top = 0;
  }
  public void expand(){// , 
    Object[] larger = new Object[size()*2];
    for(int index = 0;index < top;index++)
      larger[index] = contents[index];
    contents = larger;
  }
  public int size() {
    return top;
  }
  public boolean isEmpty() {
    return (size() == 0);
  }
  public void push(Object element) {
    //if(isEmpty())
      //expand();
    if(top == contents.length)
      expand();
    contents[top] = element;
    top++;
  }
  public Object pop() {
    if(isEmpty())
    {
      System.out.println("stack is empty!");
      System.exit(1);
    }
    Object result = contents[top-1];
    contents[top-1] = null;// 
    top--;
    return result;  
    /* :::
     * top--;
     * Object result = contents[top];
     * contents[top] = null;*/    
  }
  public Object peek() {
    Object result;
    if(isEmpty())
      result = null;
    else
      result = contents[top-1];
    return result;
  }
  public static void main(String[] args) {
    ArrayStack stack = new ArrayStack();
    System.out.println(" 0 24 , 10 ");
    for(int i = 0;i < 25;i++)
      stack.push(i);
    for(int i = 0;i < 10;i++)
      stack.pop();
    System.out.println(" : " + stack.size());
    System.out.println(" ?: " + stack.isEmpty());
    System.out.println(" : " + stack.peek());
  }
}
실행 결과:
0부터 24까지 순서대로 창고를 눌러 10회 연속 창고를 나가다
창고 크기: 15
창고가 비어 있습니까?false
스택 상단 요소: 14
컬렉션 LinkedList를 사용하여 스택 시뮬레이션
방법
java의 범주형은 LinkedList로 하여금 각종 데이터 형식의 창고를 아날로그적으로 저장할 수 있게 한다. int, double, String, Object 등을 포함하여 몇 가지 사용되는 API 인터페이스를 소개한다.
창고에 들어가다

  void addFirst(E e); //   

스택 요소 가져오기

  E getFirst(); //   

창고에서 나가다

  E removeFirst(); //   

창고를 비우다

  boolean isEmpty(); //   

예제 코드
   

 import java.util.LinkedList; 
  import java.util.NoSuchElementException; 
   
   
  public class SimulateStack { 
    private LinkedList<Integer> stack = new LinkedList<Integer>(); 
     
    public boolean isEmpty() { 
      return this.stack.isEmpty(); 
    } 
     
    public void push(int data) { 
      this.stack.addFirst(data); 
    } 
     
    public int pop() throws NoSuchElementException{ 
      return this.stack.removeFirst(); 
    } 
     
    public int getTop() throws NoSuchElementException{ 
      return this.stack.getFirst(); 
    } 
     
    public static void main(String args[]) { 
      SimulateStack s = new SimulateStack(); 
       
      s.push(1); 
      s.push(2); 
      s.push(3); 
       
      while (! s.isEmpty()) { 
        int data = s.getTop(); 
        System.out.println(data); 
        s.pop(); 
      } 
    } 
  } 

좋은 웹페이지 즐겨찾기