1. A definição e as características das pilhas e filas
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.
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 octal
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.
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:
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)
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.