Atividade Estruturada
Competências e Habilidades:
Conceituar Lista Duplamente Encadeada
Representar Listas Duplamente Encadeadas
Implementar operações com Lista Duplamente Encadeada
Realizar aplicações com Listas Duplamente Encadeadas
ATIVIDADE 07:
1. Considere uma lista duplamente encadeada apontada por um ponteiro x e ainda, um nó fora da lista, apontado por um ponteiro p.
Sabendo que x aponta para qualquer nó da lista, faça o que se pede :
a. Diga o que faz a função Eureka
b. Dê um exemplo para cada caso, usando ilustrações gráficas.
// Seja o tipo struct nodupla { struct nodupla *elink; int dado; struct nodupla *dlink;
};
// Código da função void Eureka(nodupla *p, nodupla *x)
{
if (xdlink != NULL) xdlinkelink = p; pdlink = xdlink; pelink = x; xdlink = p;
}
2. Faça um programa (aplicação) em C++ para ler a quantidade n de nós de uma lista duplamente encadeada de reais, sendo n ≥ 0. A lista deverá ser construída com n nós, através de sucessivas inserções no início. Após sua criação, a lista deverá ser impressa, se possível. Emita mensagem de erro em caso de lista vazia.
Defina o tipo nodupla para reais.
Nesta questão, implemente 2 funções (operações) :
a. nodupla *insereFrente(nodupla *p, int valor); p aponta para o primeiro nó da lista e valor é o elemento a ser inserido no início da lista.
b. void imprime(nodupla *p); onde p aponta para o 1º. nó da lista (i.e., nó mais à esquerda na lista).
A lista deverá ser impressa da esquerda para a direita.
3) Considerando o programa do item 2) acima, em que o ponteiro externo aponta para o primeiro nó da lista, implemente as seguintes operações (funções) com a lista criada:
a. Remova o primeiro nó da lista, imprimindo-a ao final.
b. Remova o último nó da lista, imprimindo-a ao final.
c. Conte o número de nós da lista, considerando o protótipo : int contaNos (nodupla *); sendo que a função contaNos deverá receber o ponteiro para o início da lista (nó