Estruturas de Dados Dinâmicas¶
Geral¶
| main.c | |
|---|---|
Operações¶
Inserir¶
Passos Gerais¶
- Passagem por referência - deve modificar valores
- Criar novo nó -
Node *new = (Node *)malloc(sizeof(Node)) - Verificar alocação de memória -
if (new != NULL) - Preencher nó
- Achar ponto de inserção
- Se for o caso, ver se a estrutura está vazia
- Inserir o nó
- Atualizar ponteiros vizinhos
Variações¶
Pilha¶
| inserir_pilha.c | |
|---|---|
Fila¶
| inserir_fila.c | |
|---|---|
Lista encadeada¶
| inserir_lista_inicio.c | |
|---|---|
L2E¶
Lista circular¶
L2C¶
Remover¶
Passos Gerais¶
- Passagem por referência - deve modificar valores
- Ponteiro auxiliar - referência para o lugar de remoção
- Verificar se a estrutura está vazia
- Salvar referência -
aux = *head - Atualizar os ponteiros vizinhos
- Liberar memória do nó removido
Variações¶
Pilha¶
| remover_pilha_void.c | |
|---|---|
Fila¶
| remover_fila_void.c | |
|---|---|
| remover_fila_int.c | |
|---|---|
Lista encadeada¶
| remover_lista_inicio_void.c | |
|---|---|
| remover_lista_inicio_int.c | |
|---|---|
L2E¶
Lista circular¶
L2C¶
Imprimir¶
Passos Gerais¶
- Passagem por valor - não precisa modificar a estrutura, basta uma cópia para a função executar seu objetivo
- Para não perder a referência da
head, criar um ponteiro auxiliartemp(opcional em alguns casos, mas necessário em outros. Dispensável na impressão inversa de listas encadeadas, que usa função recursiva) - Verificar se estrutura está vazia -
while (head != NULL)(pilhas e filas) - Imprimir cada elemento
- Andar cada ponteiro - evitar loop infinito
- Fora do loop -
printf("NULL\n")- indicar fim da impressão
Variações¶
Pilha¶
| imprimir_pilha.c | |
|---|---|
Fila¶
Lista encadeada¶
| imprimir_lista.c | |
|---|---|
| imprimir_lista_reversa.c | |
|---|---|
| imprimir_lista_pares.c | |
|---|---|
| imprimir_lista_maiores.c | |
|---|---|
| imprimir_lista_soma.c | |
|---|---|
| imprimir_lista_encadeamento.c | |
|---|---|
| imprimir_lista_ultimo.c | |
|---|---|
L2E¶
Lista circular¶
L2C¶
Tamanho¶
Passos Gerais¶
- Passagem por valor - não precisa modificar a estrutura, basta uma cópia para a função executar seu objetivo
- Criar contador
- Percorrer lista -
while (head != NULL) - Incrementar contador
- Andar ponteiro
- Return contador
Variações¶
Pilha¶
| tamanho_pilha.c | |
|---|---|
Fila¶
| tamanho_fila.c | |
|---|---|
Lista encadeada¶
| tamanho_lista.c | |
|---|---|