Lista encadeada c
Nomes:Aldir Koch
Obs.:
- Este trabalho deverá ser realizado em dupla ou individual.
- Todas as codificações deveram ser realizadas em C ANSI e deve ser colocadas abaixo de cada questão.
- A entrega deste trabalho será no o dia 12/05/2011, impresso e haverá teste de autoria das codificações. - Duvidas e esclarecimentos por email, MSN ou aula presencial.
1. Crie um programa “exercicio1.c” contendo as seguintes funções: a. Inserção no início; b. Inserção no final; c. Remoção de um elemento v passado como parâmetro; d. Busca de um elemento v; e. Listagem dos elementos contidos na lista; f. Liberar a memória alocada.
2. Implemente uma função que tenha como valor de retorno o comprimento de uma lista encadeada, isto é, calcule o número de nós da lista. Esta função deve obedecer ao protótipo: int comprimento (lista* l);
3. Escreva um algoritmo que inverta a ordem dos elementos de uma lista encadeada. A inversão deve ser realizada de forma a não alterar a ordem física dos elementos na lista.
[pic]
#include
#include
#include
struct lista_no
{
int info; struct lista_no *ant; struct lista_no *prox;
};
typedef struct lista_no LISTA;
LISTA* criar(void);
LISTA* insere_inicio(LISTA* l, int v);
LISTA* insere_final(LISTA* l, int v);
LISTA* buscar(LISTA* l, int v);
LISTA* remover(LISTA* l, int v);
LISTA* inverte(LISTA* l);
LISTA* criar(void)
{
return NULL;
}
LISTA* insere_inicio(LISTA* l, int v)
{
LISTA* p = (LISTA*) malloc(sizeof(LISTA)); p->info = v; p->prox = l; p->ant = NULL;
if(l != NULL) l->ant = p; return p;
}
LISTA* insere_final(LISTA* l, int v)
{
LISTA* p = (LISTA*) malloc(sizeof(LISTA)); p->info = v; p->prox = NULL;
if (l==NULL) l = p; else { LISTA* atual = l; while(atual->prox != NULL){ atual = atual->prox;