Realización de lista enlazada dinámica de pila

pila de paquetes;

/ **
 * @autor Eightn0
 * @create 2021-03-15 15:00
 * Realizar pila con lista vinculada dinámica
 * /

/ * Declarar nodo * /
class Node {
    int datos;
    Nodo siguiente;

    Nodo público (datos int) {
        this.data = datos;
        this.next = null;
    }
}

/ * Use una lista vinculada para implementar la pila y los métodos de diseño para empujar, hacer estallar y juzgar si la pila está vacía * /
class StackByLink {
    public Node front; // Puntero al final de la pila
    public Node rear; // Puntero a la parte superior de la pila

    / * Determinar si la pila está vacía: isEmpty () * /
    public boolean isEmpty () {
        return front == null; // Juzgar si la pila está vacía por si el puntero inferior está vacío
    }

    / * Imprimir contenido de la pila: output_of_stack * /
    public void output_of_stack () {
        Node current = front; // Empezar desde el puntero inferior
        while (current! = null) {// La condición para saltar fuera del ciclo: la impresión ha terminado
            System.out.println ("[" + datos.actual + "]");
            current = current.next; // El puntero se mueve hacia abajo, imprime el siguiente
        }
        System.out.println (); // Por estética
    }

    / * En la pila, agregue datos en la parte superior: inserte * /
    inserción de vacío público (datos int) {
        Node newNode = new Node (datos); // Cargar los datos que se agregarán al nodo
        if (this.isEmpty ()) {// Si la pila actual está vacía, entonces los punteros superior e inferior están en el nuevo nodo
            front = newNode;
            trasero = newNode;
        } else {// La pila actual no está vacía, luego agregue el nodo desde la parte superior, haga el punto superior original al nuevo nodo y luego mueva el puntero superior al nuevo nodo
            rear.next = newNode;
            trasero = newNode;
        }
    }

    / * Extraer de la pila-eliminar datos en la parte superior: pop * /
    pop vacío público () {
        Nodo nuevo Nodo;
        if (isEmpty ()) {// La pila vacía no necesita eliminar datos
            System.out.println ("Pila actualmente vacía");
            regreso;
        }
        newNode = front; // Solo hay un dato en la pila
        if (newNode == trasero) {
                frente = nulo;
                trasero = nulo;
                System.out.println ("Pila actualmente vacía"); // Estará vacío si se borra
        } else {// Situación más general
            while (newNode.next! = rear) {
                newNode = newNode.next;
            }
            newNode.next = rear.next;
            trasero = newNode;
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/vivian233/article/details/114836280
Recomendado
Clasificación