Computação
Nome:
Data de Entrega: 28/03/2012
1. Considere a a função abaixo. Ao receber uma lista encadeada e um inteiro x, ela promete devolver o endereço de uma célula com conteúdo x. Se tal célula não existe, promete devolverNULL. celula *busca (int x, TLista *lista) { int achou; celula *p; achou = 0; p = lista->inicio; while (p != NULL && !achou) { if (p->conteudo == x) achou = 1; p = p->prox; } if (achou) return p; else return NULL; }
2. [MÍNIMO] Escreva uma função que encontre uma célula de conteúdo mínimo.
3. Escreva uma função que faça um busca em uma lista crescente.
4. [PONTO MÉDIO DE UMA LISTA] Escreva uma função que receba uma lista encadeada e devolva o endereço de um nó que esteja o mais próximo possível do meio da lista. Faça isso sem contar explicitamente o número de nós da lista.
5. VERIFICAÇÃO DO TAMANHO. Compile e execute o seguinte programa: typedef struct no* TNo; struct no { int conteudo;
TNo prox;
};
int main (void) { printf ("sizeof (TNo) = %d\n", sizeof (TNo)); printf ("sizeof (struct No) = %d\n", sizeof (struct no)); return 0;
}
6. Por que a seguinte operação de insere não funciona? void insere (int x, TNo p) { struct no nova; nova.conteudo = x; nova.prox = p->prox; p->prox = &nova; }
7. Critique a seguinte versão da função remove: void remove (TNo p, TLista *lista) {
TNo morto; morto = p->prox; if (morto->prox == NULL) p->prox = NULL; else p->prox = morto->prox; free (morto); }
9. Escreva uma função que copie um vetor para uma lista encadeada.
11.Escreva uma função que copie uma lista encadeada para um vetor.
12.Escreva uma função que faça uma cópia de uma lista dada.
13.Escreva uma função que concatena duas listas encadeadas (isto é, "amarra" a segunda no fim da primeira).
14.Escreva uma função que conta o número de células de uma lista encadeada.
15.Escreva uma função que remove a k-ésima célula de uma lista encadeada.
16.Escreva uma função que insere na