A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Versão 07/12/11Slide 1 IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia.

Apresentações semelhantes


Apresentação em tema: "Versão 07/12/11Slide 1 IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia."— Transcrição da apresentação:

1 Versão 07/12/11Slide 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

2 Versão 07/12/11Slide 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.

3 Versão 07/12/11Slide 3 Iniciando struct lista { int dado; struct lista *prox; }; struct lista *l = NULL; int quant = 0; ?? l quant

4 Versão 07/12/11Slide 4 Inserindo 1o elemento na lista struct lista *novo = NULL; ?? novo

5 Versão 07/12/11Slide 5 Inserindo 1o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); ___ dado prox

6 Versão 07/12/11Slide 6 Inserindo 1o elemento na lista int dado; printf(Digite o dado a ser inserido: ); scanf(%d, &dado); novo->dado = dado;

7 Versão 07/12/11Slide 7 Inserindo 1o elemento na lista novo->prox = l;

8 Versão 07/12/11Slide 8 Inserindo 1o elemento na lista l = novo; quant++;

9 Versão 07/12/11Slide 9 Inserindo 2o elemento na lista struct lista *novo = NULL;

10 Versão 07/12/11Slide 10 Inserindo 2o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista));

11 Versão 07/12/11Slide 11 Inserindo 2o elemento na lista int dado; printf(Digite o dado a ser inserido: ); scanf(%d, &dado); novo->dado = dado;

12 Versão 07/12/11Slide 12 Inserindo 2o elemento na lista novo->prox = l;

13 Versão 07/12/11Slide 13 Inserindo 2o elemento na lista l = novo; quant++;

14 Versão 07/12/11Slide 14 Inserindo 3o elemento na lista struct lista *novo = NULL;

15 Versão 07/12/11Slide 15 Inserindo 3o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista));

16 Versão 07/12/11Slide 16 Inserindo 3o elemento na lista int dado; printf(Digite o dado a ser inserido: ); scanf(%d, &dado); novo->dado = dado;

17 Versão 07/12/11Slide 17 Inserindo 3o elemento na lista novo->prox = l;

18 Versão 07/12/11Slide 18 Inserindo 3o elemento na lista l = novo; quant++;

19 Versão 07/12/11Slide 19 Inserindo 4o elemento na lista struct lista *novo = NULL;

20 Versão 07/12/11Slide 20 Inserindo 4o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista));

21 Versão 07/12/11Slide 21 Inserindo 4o elemento na lista int dado; printf(Digite o dado a ser inserido: ); scanf(%d, &dado); novo->dado = dado;

22 Versão 07/12/11Slide 22 Inserindo 4o elemento na lista novo->prox = l;

23 Versão 07/12/11Slide 23 Inserindo 4o elemento na lista l = novo; quant++;

24 Versão 07/12/11Slide 24 Inserindo 5o elemento na lista struct lista *novo = NULL;

25 Versão 07/12/11Slide 25 Inserindo 5o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista));

26 Versão 07/12/11Slide 26 Inserindo 5o elemento na lista int dado; printf(Digite o dado a ser inserido: ); scanf(%d, &dado); novo->dado = dado;

27 Versão 07/12/11Slide 27 Inserindo 5o elemento na lista novo->prox = l;

28 Versão 07/12/11Slide 28 Inserindo 5o elemento na lista l = novo; quant++;

29 Versão 07/12/11Slide 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.

30 Versão 07/12/11Slide 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

31 Versão 07/12/11Slide 31 Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; //continua no próximo slide }

32 Versão 07/12/11Slide 32 Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; //continua no próximo slide }

33 Versão 07/12/11Slide 33 Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; free(excluir) //continua no próximo slide }

34 Versão 07/12/11Slide 34 Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; free(excluir); quant--; }

35 Versão 07/12/11Slide 35 Excluindo 2° elemento int pos = 1; int i = quant-1;

36 Versão 07/12/11Slide 36 Excluindo 2° elemento struct lista *excluir = NULL;

37 Versão 07/12/11Slide 37 Excluindo 2° elemento struct lista *tmp = l;

38 Versão 07/12/11Slide 38 Excluindo 2° elemento 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... }

39 Versão 07/12/11Slide 39 Excluindo 2° elemento 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... }

40 Versão 07/12/11Slide 40 Excluindo 2° elemento 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... }

41 Versão 07/12/11Slide 41 Excluindo 2° elemento 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... }

42 Versão 07/12/11Slide 42 Excluindo 2° elemento if(pos == quant-1) { // } else { while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; tmp->prox = excluir->prox; free(excluir); quant--; }

43 Versão 07/12/11Slide 43 Exibindo os elementos da lista struct lista *tmp = l; int i = quant-1;

44 Versão 07/12/11Slide 44 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 2 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

45 Versão 07/12/11Slide 45 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 2 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

46 Versão 07/12/11Slide 46 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 1 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

47 Versão 07/12/11Slide 47 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 1 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

48 Versão 07/12/11Slide 48 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 0 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

49 Versão 07/12/11Slide 49 Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 0 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; }

50 Versão 07/12/11Slide 50 Exibindo os elementos da lista while(tmp != NULL) { printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } printf(\n \n);

51 Versão 07/12/11Slide 51 FIM


Carregar ppt "Versão 07/12/11Slide 1 IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia."

Apresentações semelhantes


Anúncios Google