Você está na página 1de 3

CENTRO UNIVERSITRIO DE JOO PESSOA

PR-REITORIA DE ENSINO DE GRADUAO PR-EG


CURSO DE BACHARELADO EM CINCIA DA COMPUTAO
Componente Curricular: ESTRUTURA DE DADOS I
Professor: WALACE SARTORI BONFIM
Semestre: 2017.1 Perodo: 3 Turma: Data:

Utilizando as seguintes siglas:


Lista Circular Duplamente Encadeada LCDE
Lista Duplamente Encadeada LDE
Lista Encadeada LE
Lista Sequencial Esttica LSE
Considere que todas essas listas so ordenadas e que as listas encadeadas so
dinmicas. Escolhendo apenas uma lista, diga qual a melhor opo para os seguintes
problemas:
( ) Quantidade limitada de elementos.
( ) Sistema com processador lento e necessidade de rpido acesso aos elementos
da lista.
( ) Muito acesso a elementos no sequenciais.
( ) Computador com muita memria. Quantidade de elementos indefinida, e
necessidade de rpido acesso aos elementos.
( ) Necessidade de que do primeiro elemento possa se atingir o ltimo e do ltimo
elemento possa se atingir o primeiro. Quantidade de elementos indefinida.
( ) Necessidade de percorrer a lista para frente e para trs.
( ) Quantidade de elementos aumentar sob demanda.
( ) Quantidade de elementos indefinida.
( ) Sistema com pouca memria.
( ) A lista pode no ter incio nem fim, mas crescer, e precisa-se apenas de um
ponteiro para ela.

Lista encadeada:
0x989 0x6789 0x5439 0x345 0x1024 0x4359

andre carlos joo joneide maria


Observando a figura da LISTA ENCADEADA acima, responda:
A varivel L de que tipo e o que ela carrega dentro dela?
O endereo de memria 0x6789 de uma rea de que tipo?
Qual o valor de &L?
*L tem que tipo de estrutura?
O que tem dentro de L->prox?
Considere a declarao de estruturas, o contexto abaixo, os operadores &, -> e *
sobre ponteiros e as afirmativas de 1 a 10:
// Tipo base dos elementos da lista
typedef struct elementos {
char nome[50];
} t_elemento;

// Estrutura da lista
typedef struct no {
t_elemento dado; // elemento contendo os dados
struct no * prox; // ponteiro para o proximo elemento
} t_no; // tipo da estrutura

typedef t_no * t_lista; // t_lista igual a t_no *

t_lista L, M;

0x989 0x6789 0x5439 0x345 0x1024 0x4359

andre carlos joo joneide maria

1) L uma varivel cujo contedo um endereo de memria de uma rea do tipo t_no;
2) A atribuio M = L; resulta em colocar o valor 0x6789 dentro da varivel M;
3) O operador & aplicado em L, &L, resulta em 0x989;
4) O operador * aplicado em L, *L, resulta em uma rea do tipo t_no alocada na posio
0x6789 da memria;
5) O operador -> aplicado em L, L->prox, resulta em 0x5439 e L->prox->prox resulta em 0x345;
6) O operador -> aplicado em L, L->dado, resulta em uma rea do tipo t_elemento;
7) Os operadores -> e . aplicados em L, L->dado.nome, resulta no string andre;
8) Para percorrer a lista acessando cada n, basta utilizar um ponteiro do tipo t_no, seja Pto, e
realizar a operao Pto = Pto->prox;
9) A funo FUNC(t_lista P1, t_lista * P2, t_elemento DD) que for chamada como FUNC(L, &L, L-
>prox.dado) ir receber em P1 o valor 0x6789, em P2 o valor 0x989 e em DD a rea do tipo
t_elemento que est na posio 0x6789 de memria;
10) Para partir de L e chegar na rea de endereo 0x1024 tenho que fazer Pto = Pto->prox trs
vezes;
Desenhe o que acontece na memria do computador ao serem executadas as seguintes
linhas de comando (identificadas pelas letras a), b) c) e assim por diante):