Uso de pilha e fila em Java

Uso de pilha e fila em Java

Implementação de pilha

Usando a classe de coleção Java

  1. boolean isEmpty();// Determina se a pilha atual está vazia, equivalente a empty ();
  2. synchronized E peek();// Pega o elemento top atual
  3. Synchronized E pop();// Obtenha o elemento top atual e exclua
  4. E push(E object);// Adiciona elementos ao topo da pilha
  5. Synchronized int search(Object o);// Encontre a posição do elemento na pilha, contando de baixo para cima na pilha
import java.util.Stack;
public class Solution{
    public static void main(String[] args){
        Stack<Integer> sk=new Stack<Integer>();
        System.out.println(sk.isEmpty());//判断栈是否为空,true
        for(int i=0;i<10;i++){
            int e=sk.push(i+20);//将元素加入栈顶,并返回栈顶元素
            System.out.println(i+":  "+e);
        }
        System.out.println(sk.empty());//判断栈是否为空,false
        System.out.println(sk.pop());//返回栈顶元素,并删除
        System.out.println(sk.peek());//返回当前栈顶元素
        
        System.out.println("first:"+sk.search(20));//查找栈中元素的位置
        System.out.println("last:"+sk.search(29));
    }
}

Insira a descrição da imagem aqui

Use o LinkedList para implementar indiretamente o Stack

LinkedListÉ uma AbstractSequentialListlista duplamente vinculada herdada e também pode ser usada como uma pilha, fila ou fila dupla

  1. Método da pilha : Método push(e); equivalente : addFirst(e);// Adicione elementos ao topo da pilha
  2. Método da pilha : Método pop(); equivalente : removeFirst();// Obtenha o elemento superior atual da pilha e exclua-o
  3. Método da pilha : Método peek(); equivalente : peekFirst();// Obtenha o elemento superior da pilha atual
import java.util.LinkedList;
import java.util.Stack;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> sk=new LinkedList<Integer>();
        System.out.println(sk.isEmpty());//判断是否为空,true
        //System.out.println(sk.empty());错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            sk.addFirst(i+20);//向栈顶添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+sk.peekFirst());
        System.out.println("removeFirst:"+sk.removeFirst());//获得栈顶元素并删除
        System.out.println("peekFirst:"+sk.peekFirst());//获得栈顶元素
    }
}

Insira a descrição da imagem aqui

Implementação de fila

Embora exista uma Queueinterface em Java, a classe de implementação da fila não é fornecida, mas LinkedLista Queueinterface é implementada . Por ser LinkedListuma lista duplamente vinculada, é muito conveniente implementar todas as funções da fila. Ao usar Queue, tente evitar o uso Collectiondo método add()sum remove(), porque o método add()sum remove()lançará uma exceção quando falhar; use offer()para adicionar elementos, use poll()para obter e excluir elementos, você pode julgar se é pelo valor de retorno.

Definição de fila:Queue<E> queue=new LinkedList<E>();

  1. Método fila : offer(e); Equivalente Método : offer(e)/ offerLast(e);elementos // adicionar à cauda
  2. método fila : poll(e); método equivalente : poll(e)/ pollFirst(e);// Obter a primeira equipe e eliminar elementos
  3. método fila : peek(e); método equivalente : peek(e)/ peeFirst(e);equipa // para obter o primeiro elemento
  • código 1
import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        Queue<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offer(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peek());
        System.out.println("removeFirst:"+queue.poll());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peek());//获得队首元素
    }
}

Insira a descrição da imagem aqui

  • código 2
import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offer(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peek());
        System.out.println("removeFirst:"+queue.poll());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peek());//获得队首元素
    }
}

Insira a descrição da imagem aqui

  • código 3
import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offerLast(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peekFirst());
        System.out.println("removeFirst:"+queue.pollFirst());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peekFirst());//获得队首元素
    }
}

Insira a descrição da imagem aqui

Publicado 395 artigos originais · ganhou 130 · 200.000 visualizações +

Acho que você gosta

Origin blog.csdn.net/qq_40507857/article/details/86547895
Recomendado
Clasificación