Notas de estudo de desenvolvimento da plataforma de big data Java (6) - a realização da estrutura da pilha de dados de simulação de array

1. Estrutura e algoritmo de dados:


Etapa 1) Definir os elementos da pilha de dados:

 private int maxSize;	//栈容量
 private int[] stack;	//栈数组
 private int top = -1;	//栈底

Etapa 2) Inicializar elementos:

  public ArrayStack(int maxSize){
    
    
      this.maxSize = maxSize;
      stack = new int[this.maxSize];
  }

Etapa 3) Condição de pilha de dados cheia:

    public boolean isFull(){
    
    
        return top == maxSize-1;
    }
    

Etapa 4) A pilha de dados está vazia. Condição:

    public boolean isEmpty(){
    
    
        return top == -1;
    }
    

Etapa 5) Método de salvar dados:

    public void push(int value){
    
    
        if(isFull()){
    
    
            System.out.println("栈满");
            return;
        }
        top++;
        stack[top] = value;
    }
    

Etapa 6) Método de extração de dados:

    public int pop(){
    
    
        if(isEmpty()){
    
    
            throw new RuntimeException("栈空");
        }
        int value = stack[top];
        top--;
        return value;
    }
    

Etapa 7) Método de transferência de dados:

    public void list(){
    
    
        if(isEmpty()){
    
    
            System.out.println("栈空");
        }
        for (int i=top; i>=0; i--){
    
    
            System.out.printf("stack[%d]=%d\n",i, stack[i]);
        }
    }
    

Etapa 8) método principal:

public static void main(String[] args) {
    
    
        ArrayStack stack = new ArrayStack(4);
        String key = "";
        boolean loop = true;
        Scanner sc = new Scanner(System.in);

        while (loop){
    
    
            System.out.println("show: 出栈");
            System.out.println("exit: 退出");
            System.out.println("push: 添加");
            System.out.println("pop: 取出");
            System.out.println("请输入");

            key = sc.next();
            switch (key){
    
    
               case "show" :
                    stack.list();
                    break;
                case "push" :
                    System.out.println("请输入一个数");
                    int value = sc.nextInt();
                    stack.push(value);
                    break;
                case "pop" :
                    try {
    
    
                        int res = stack.pop();
                        System.out.printf("出栈的数据是:%d\n", res);
                    } catch (Exception e) {
    
    
                        System.out.printf(e.getMessage());
                    }
                    break;
                case "exit" :
                    sc.close();
                    loop = false;
                    break;
            }
        }
        System.out.println("程序退出");
    }
    

Escrito por ChiKong_Tam em 8 de setembro de 2020

Acho que você gosta

Origin blog.csdn.net/qq_42209354/article/details/108474698
Recomendado
Clasificación