Pilha e fila de estrutura de dados (1)

1. A definição e as características das pilhas e filas

  1. Pilha: Pilha (pilha), também conhecida como pilha, é uma tabela linear ( última a entrar, primeiro a sair ) limitada a inserir e excluir operações em uma extremidade da tabela . Essa extremidade é chamada de topo da pilha , enquanto a outra extremidade é chamada de parte inferior da pilha . Uma lista vazia sem elementos é chamada de pilha vazia.

  2. Fila: Em contraste com uma pilha, uma fila é uma lista linear de primeiro a entrar, primeiro a sair. Ele só permite operações de exclusão na extremidade frontal da tabela e operações de inserção na extremidade posterior da tabela. A extremidade que permite a inserção é denominada traseira e a extremidade que permite a exclusão é denominada frontal.

    A inserção de novos elementos em uma pilha também é chamada de empurrar para a pilha, e a exclusão de elementos de uma pilha também é chamada de empilhamento. A inserção de um elemento de fila na fila é chamada de enfileiramento, e a exclusão de um elemento de fila da fila é chamada de desenfileiramento. Como as tabelas lineares, as estruturas de armazenamento de pilhas e filas também incluem sequencial e encadeado.

    Link original: https://blog.csdn.net/qq_41117236/article/details/80764231

Resumo: Pilhas e filas são tabelas essencialmente lineares, mas têm operação limitada.

2. A aplicação de pilha e fila

Caso número um:

Conversão entre bases: frequentemente usamos o método de divisão de jogadas e voltas, como converter o decimal 161 em octalimage.png

Caso 2. Correspondência de suporte:

Quando escrevemos código, geralmente usamos muitos parênteses aninhados, e o computador usa as características da pilha para corresponder.image.png

Caso 3. Valor de expressão:

Por exemplo, uma expressão (a + b) * c + e / f

O computador também usa a pilha para realizar cálculos, primeiro crie a pilha de operandos OPTR pilha de operandos OPND

* Digitalize o número e coloque-o na pilha OPND;

Se o operador for escaneado, então:

  1. Se o operador tiver uma prioridade mais alta do que o operador OPTR no topo da pilha, ele será colocado no OPTR da pilha (quando o OPTR não tiver elementos no início, o operador será colocado diretamente na pilha)

  2. Se o operador tiver uma prioridade mais baixa do que o operador do topo da pilha OPTR, tire dois números do topo da pilha OPND para cálculo e coloque o resultado do cálculo na pilha OPND

* Continue a processar o caractere atual até que o caractere final seja encontrado

Três. Fila circular

A fila circular deve envolver a última posição do espaço de armazenamento da fila na primeira posição para formar um espaço de anel lógico para a fila reciclar.

Aqui, falo apenas sobre a implementação do programa da fila circular. Quanto a outras pilhas sequenciais, pilhas em cadeia, etc., eu as introduzi na lista de sequência e na lista vinculada antes, e há poucas mudanças.

A razão pela qual há uma fila circular em vez de uma pilha circular é que a fila é "o primeiro a entrar, o primeiro a sair", de modo que o espaço pode ser reciclado. Assumimos que MAXQSIZE é o comprimento da fila e Q.rear aponta para o próximo elemento do último elemento. Q.front aponta para o elemento inicial.

Primeiro crie uma fila

 # define MAXQSIZE 64 
 dados de estrutura 
{ 
        nome do caractere []; 
        idade interna; 
}; 
 struct Com 
 { 
         struct data arr [MAXQSIZE]; 
         retaguarda interna = 0; 
        frente interna = 0; 
         
 }; 
int main 
{ 
        struct Com membro; 
        return 0; 
}

Inserir elemento

        void insert (struct Com membro, struct ele de dados) 
        { 
        if ((member.rear + 1)% MAXQSIZE == member.front) 
                   return; 
         else         
                {  
                 * (member.arr [member.front]) = ele; 
                  member.rear = (member.rear + 1)% MAXQSIZE; 
                 } 
        } 
       // Pode-se ver que não é difícil para a fila circular dominar% operações.

Acho que você gosta

Origin blog.51cto.com/14961637/2665769
Recomendado
Clasificación