Carregar apresentação
PublicouJoana Mario Alterado mais de 11 anos atrás
1
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB mcampos at ifto.edu.br Versão 07/12/11
2
Trabalho O algoritmo apresentado nos slides seguintes implementa uma lista encadeada, onde cada elemento será inserido no final da lista (por questões de simplificação, por enquanto). Assim, a variável l será um ponteiro para o último elemento da lista. Com isto, em cada um dos slides seguintes, faça uma figura para representar a situação da lista encadeada após a execução das instruções apresentadas. Cada variável existente no slide deve ser representada graficamente. Todos os slides contendo código devem possuir imagens para representar as variáveis utilizadas, principalmente variáveis do tipo “struct lista” e “struct lista *” Para cada linha de código deve ser incluído um comentário, explicando o que ocorre na execução da mesma. Nenhuma linha pode ficar sem ser comentada. Os comentários devem informar o que a instrução faz e o porquê a mesma está sendo utilizada (por exemplo, indicando o porquê de determinado valor estar sendo utilizado na instrução. Nos slides que tiverem instruções em negrito, o aluno deverá considerar apenas tais linhas para criar os desenhos que representam as variáveis daquele trecho de código. O trabalho deve ser resolvido em duplas e ao final, postado pelo Moodle. Os dois integrantes do grupo devem enviar o arquivo. Os alunos tem até o final das 4 aulas para fazer o trabalho. Versão 07/12/11
3
Iniciando struct lista { int dado; struct lista *prox; };
struct lista *l = NULL; int quant = 0; ?? quant ?? l Versão 07/12/11
4
Inserindo 1o elemento na lista
struct lista *novo = NULL; ?? novo Versão 07/12/11
5
Inserindo 1o elemento na lista
novo = (struct lista *)malloc(sizeof(struct lista)); __ _ dado prox Versão 07/12/11
6
Inserindo 1o elemento na lista
int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11
7
Inserindo 1o elemento na lista
novo->prox = l; Versão 07/12/11
8
Inserindo 1o elemento na lista
l = novo; quant++; Versão 07/12/11
9
Inserindo 2o elemento na lista
struct lista *novo = NULL; Versão 07/12/11
10
Inserindo 2o elemento na lista
novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11
11
Inserindo 2o elemento na lista
int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11
12
Inserindo 2o elemento na lista
novo->prox = l; Versão 07/12/11
13
Inserindo 2o elemento na lista
l = novo; quant++; Versão 07/12/11
14
Inserindo 3o elemento na lista
struct lista *novo = NULL; Versão 07/12/11
15
Inserindo 3o elemento na lista
novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11
16
Inserindo 3o elemento na lista
int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11
17
Inserindo 3o elemento na lista
novo->prox = l; Versão 07/12/11
18
Inserindo 3o elemento na lista
l = novo; quant++; Versão 07/12/11
19
Inserindo 4o elemento na lista
struct lista *novo = NULL; Versão 07/12/11
20
Inserindo 4o elemento na lista
novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11
21
Inserindo 4o elemento na lista
int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11
22
Inserindo 4o elemento na lista
novo->prox = l; Versão 07/12/11
23
Inserindo 4o elemento na lista
l = novo; quant++; Versão 07/12/11
24
Inserindo 5o elemento na lista
struct lista *novo = NULL; Versão 07/12/11
25
Inserindo 5o elemento na lista
novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11
26
Inserindo 5o elemento na lista
int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11
27
Inserindo 5o elemento na lista
novo->prox = l; Versão 07/12/11
28
Inserindo 5o elemento na lista
l = novo; quant++; Versão 07/12/11
29
Excluindo elemento Apesar de em uma lista encadeada não haver um índice para poder acessar as posições, o algoritmo implementado considera que o primeiro elemento é o da posição 0, o segundo da posição 1, e assim por diante. A variável pos indicará a posição a ser excluída. Versão 07/12/11
30
Excluindo último elemento (5°)
int pos = 4; struct lista *excluir = NULL; //Informe o valor da variável quant //neste momento, colocando o valor //dentro do quadrado acima Versão 07/12/11
31
Excluindo último elemento (5°)
if(pos == quant-1) { excluir = l; //continua no próximo slide...... } Versão 07/12/11
32
Excluindo último elemento (5°)
if(pos == quant-1) { excluir = l; l = l->prox; //continua no próximo slide } Versão 07/12/11
33
Excluindo último elemento (5°)
if(pos == quant-1) { excluir = l; l = l->prox; free(excluir) //continua no próximo slide } Versão 07/12/11
34
Excluindo último elemento (5°)
if(pos == quant-1) { excluir = l; l = l->prox; free(excluir); quant--; } Versão 07/12/11
35
Excluindo 2° elemento int pos = 1; int i = quant-1; Versão 07/12/11
36
Excluindo 2° elemento struct lista *excluir = NULL; Versão 07/12/11
37
Excluindo 2° elemento struct lista *tmp = l; Versão 07/12/11
38
Excluindo 2° elemento tmp = tmp->prox; } } else {
if(pos == quant-1) { // } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 3 while(i > pos+1) { tmp = tmp->prox; //continua no próximo slide } //continua no próximo slide... Versão 07/12/11
39
Excluindo 2° elemento tmp = tmp->prox; i--; } } else {
if(pos == quant-1) { // } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 3 while(i > pos+1) { tmp = tmp->prox; i--; } //continua no próximo slide... Versão 07/12/11
40
Excluindo 2° elemento } else { }
if(pos == quant-1) { // } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 2 while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; //continua no próximo slide... } Versão 07/12/11
41
Excluindo 2° elemento } else { tmp->prox = excluir->prox;
if(pos == quant-1) { // } else { while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; tmp->prox = excluir->prox; //continua no próximo slide... Versão 07/12/11
42
Excluindo 2° elemento } else { free(excluir); quant--;
if(pos == quant-1) { // } else { while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; tmp->prox = excluir->prox; free(excluir); quant--; Versão 07/12/11
43
Exibindo os elementos da lista
struct lista *tmp = l; int i = quant-1; Versão 07/12/11
44
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
45
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
46
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
47
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
48
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
49
Exibindo os elementos da lista
while(tmp != NULL) { //Mostrar variáveis graficamente quando i for printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11
50
Exibindo os elementos da lista
while(tmp != NULL) { printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } printf(“\n \n”); Versão 07/12/11
51
FIM Versão 07/12/11
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.