Empilhar e enfileirar pontos de aprendizagem

Visão geral

Pilhas e filas são estruturas de dados básicas comumente usadas, que não são usadas apenas diretamente para descrever problemas, mas também como estruturas de dados auxiliares na implementação de algoritmos. Do ponto de vista da relação lógica entre os elementos de dados, pilhas e filas são estruturas lineares; do ponto de vista do modo de operação e do conjunto de operações, pilhas e filas são diferentes das tabelas lineares e têm suas próprias particularidades, mas são todas tabelas lineares com operações limitadas. A estrutura organizacional dos pontos de conhecimento neste capítulo é mostrada na figura abaixo:
Insira a descrição da imagem aqui

Pontos-chave / dificuldades / pontos

O foco deste capítulo é:

  1. Características operacionais das pilhas e filas;
  2. Implementação de operações básicas em pilhas e filas.

A dificuldade deste capítulo é:

  1. Método de armazenamento de fila circular;
  2. As condições de julgamento para filas vazias e cheias na fila circular.

Pontos de aprendizagem da pilha :
compreender uma linha clara para a pilha: a estrutura lógica da pilha → a estrutura de armazenamento da pilha → a realização da pilha.
Para a estrutura lógica da pilha, devemos começar com a definição da pilha, a partir da comparação com a definição e operação da tabela linear, obtêm-se as características operacionais da pilha e, por fim, é dada a definição abstrata do tipo de dados da pilha.
Para a estrutura de armazenamento da pilha, existem dois ramos: pilha sequencial e pilha em cadeia.A estrutura de armazenamento e implementação da pilha são semelhantes à tabela linear, que é essencialmente uma simplificação da tabela linear.
Para a pilha, o principal problema são as três linhas escuras a seguir.

  1. Comparação da pilha de sequência e tabela de sequência: compare o método de armazenamento da pilha de sequência e da tabela de sequência, e compare a implementação do algoritmo da pilha de sequência e da tabela de sequência.
  2. Comparação da pilha da cadeia e da lista ligada individualmente: compare o método de armazenamento da pilha da cadeia e da lista ligada individualmente e compare a implementação do algoritmo da pilha da cadeia com a da lista ligada individualmente.
  3. Comparação de pilha sequencial e pilha de cadeia; compare os métodos de armazenamento de pilha sequencial e pilha de cadeia e compare a implementação do algoritmo de pilha sequencial e pilha de cadeia.

Pontos de aprendizagem da fila :
há uma linha clara para o ensino das filas: a estrutura lógica da fila → a estrutura de armazenamento da fila → a realização da fila.
Para a estrutura lógica da fila, é necessário partir da definição da fila e, com base na comparação com a definição e operação da tabela linear, obter as características operacionais da fila e, por fim, dar a definição abstrata do tipo de dados da fila.
Para a estrutura de armazenamento da fila, dois ramos devem ser apreendidos: fila circular e fila em cadeia.A estrutura de armazenamento e implementação da fila são semelhantes à tabela linear, que é essencialmente uma simplificação da tabela linear.
A linha escura da fila é semelhante à linha escura da pilha. Além disso, as duas linhas pretas a seguir devem ser capturadas.

  1. Comparação de pilha e fila: compare as características operacionais das duas, compare a estrutura de armazenamento das duas, compare as operações básicas e a implementação das duas e aprofunde a compreensão da pilha e da fila no processo de comparação constante.
  2. O processo de introdução de filas circulares: não introduza diretamente métodos de armazenamento de filas circulares, mas introduza gradualmente filas circulares na forma de fazer perguntas, analisar problemas e resolver problemas. Por um lado, treina a capacidade de raciocínio lógico, por outro lado, também reflete a flexibilidade da estrutura de armazenamento .

Pontos de conhecimento

  1. A pilha é uma mesa linear limitada para inserir e excluir operações apenas no final da mesa. Além da relação linear, os elementos na pilha também têm as características de último a entrar, primeiro a sair.
  2. A estrutura de armazenamento sequencial da pilha é chamada de pilha sequencial, que é essencialmente uma simplificação da tabela sequencial. Normalmente, o final da matriz com o subscrito 0 é usado como a parte inferior da pilha, e um ponteiro superior é anexado para indicar a posição do elemento superior da pilha na matriz.
  3. A complexidade de tempo dos algoritmos que implementam as operações básicas da pilha sequencial é toda O (1).
  4. A estrutura de armazenamento vinculada da pilha é chamada de pilha em cadeia, que geralmente é representada por uma lista unicamente vinculada e não requer nós principais adicionais.
  5. As operações de inserção e exclusão da pilha em cadeia precisam apenas lidar com a situação em que o nó começa no topo da pilha e a complexidade de tempo é O (1).
  6. Uma fila é uma tabela linear que só permite operações de inserção em uma extremidade e operações de exclusão na outra. Além da relação linear, os elementos na fila também têm características de primeiro a entrar, primeiro a sair.
  7. As filas sequenciais terão falsos problemas de estouro. A solução é usar estruturas de armazenamento sequencial de ponta a ponta, chamadas de filas circulares. Na fila circular, qualquer modificação envolvendo o ponteiro inicial ou final da fila precisa ser modulada.
  8. Em uma fila circular, a condição de julgamento para a fila vazia é: ponteiro principal = ponteiro final; no caso de desperdiçar uma unidade de armazenamento, a condição de julgamento para fila cheia é: (ponteiro final + 1)% comprimento da matriz = ponteiro principal .
  9. A estrutura de armazenamento vinculada da fila é chamada de fila em cadeia. A fila em cadeia geralmente é anexada a um nó principal e define o ponteiro do chefe da equipe para apontar para o nó principal e o ponteiro da cauda da equipe para apontar para o nó terminal.
  10. A realização da operação básica da fila da cadeia é essencialmente uma simplificação da operação da lista unicamente vinculada. A inserção é considerada apenas no final da fila da cadeia, e a exclusão é considerada apenas no início da fila da cadeia. A complexidade do tempo é O (1).

Exercício

A pilha
não pode ser colocada na pilha quando a pilha está cheia, caso contrário, ocorrerá um estouro, portanto, para a operação de envio, devemos primeiro determinar se a pilha está cheia. (×) A
estrutura da pilha permite apenas operações de acesso no topo da pilha, e a complexidade de tempo de todas as operações básicas é O (1). (√) Os
três elementos são colocados na pilha na ordem de a, b, c, e cada elemento só pode ser colocado na pilha uma vez, então a seqüência de desempilhamento deve ser abc. (×)
Na definição de classe da pilha sequencial, a variável de membro top é um tipo de ponteiro. (×)
Deixe top denotar o índice do elemento superior da pilha, a condição de pilha vazia da pilha sequencial é (B) e a condição de pilha cheia é (D).
A.top = 0 B.top = -1 C.top = StackSize D.top = StackSize-1 O
nó principal do anexo da pilha da cadeia não tornará as operações básicas, como inserção e exclusão, mais convenientes. (√)
Dois ponteiros precisam ser modificados para realizar a operação push na pilha em cadeia. Como a operação de inserção de uma lista vinculada individualmente, há uma sequência para modificar os ponteiros. (√)
Na pilha sequencial e na pilha em cadeia, a instrução "top- -;" percebe que o topo aponta para o próximo elemento do elemento do topo da pilha atual. (×)

Fila
Existem três elementos na fila na ordem de a, b e c. Cada elemento só pode ser enfileirado uma vez, portanto, a sequência de remoção da fila só pode ser abc. (√)
Na fila sequencial, a complexidade de tempo da operação de enfileiramento e a operação de desenfileiramento são ambas O (1). (×)
Devido à mobilidade unidirecional da fila, a fila sequencial deve ter falso estouro. (×)
Como a fila só permite operações de acesso em ambas as extremidades da tabela linear, a complexidade de tempo de todas as operações básicas é O (1). (√)
Suponha que o comprimento da matriz que armazena a fila circular seja m, então (traseiro + 1)% m percebe que o valor de retaguarda é aumentado em 1 no significado circular. (√) O
nó principal é anexado à fila em cadeia, o que pode tornar a operação de entrada e saída da equipe mais conveniente. (√) A. Correto B. Errado
Na fila circular, se a frente aponta para a posição anterior do elemento principal, o elemento principal atual é (C).
A.data [front] B.data [++ front] C.data [(front + 1)% m] D.data [front ++]
Na fila em cadeia, a operação de desenfileiramento é executada no início da fila e não tem nada a ver com o ponteiro traseiro. (B) (Para ser considerado vazio)
Se uma matriz de comprimento 6 for usada para implementar uma fila circular, e os valores atuais de traseira e dianteira forem 4 e 2, respectivamente, um elemento é excluído da fila e mais dois elementos são adicionados, traseira O valor de é (0) e o valor de frente é (3).

Referência: "Estrutura de dados (do conceito à implementação C ++)" Tsinghua University Press, Wang Hongmei

Acho que você gosta

Origin blog.csdn.net/oldmao_2001/article/details/109023881
Recomendado
Clasificación