Atividades analfebetas

Disponível somente no TrabalhosFeitos
  • Páginas : 4 (980 palavras )
  • Download(s) : 0
  • Publicado : 8 de junho de 2011
Ler documento completo
Amostra do texto
Critique a função abaixo. Ao receber uma lista encadeada com cabeça 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 devolver NULL.celula *busca (int x, celula *ini) {
int achou;
celula *p;
achou = 0;
p = ini->prox;
while (p != NULL && !achou) {
if (p->conteudo == x) achou = 1;
p = p->prox; }if (achou) return p;
else return NULL; }

Escreva uma versão da função busca para listas sem cabeça.
[Mínimo] Escreva uma função que encontre uma célula de conteúdo mínimo. Faça duas versões:uma iterativa e uma recursiva.
Escreva uma função que faça um busca em uma lista crescente. Faça versões para listas com e sem cabeça. Faça versões recursiva e iterativa.
[Ponto médio de umalista] 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.Verificação do tamanho. Compile e execute o seguinte programa:
typedef struc cel celula;
struct cel {
int conteudo;
celula *prox;
};
int main (void) {
printf("sizeof (celula) = %d\n", sizeof (celula));
return 0;
}

Inserção em uma lista
Quero inserir (= insert) uma nova célula com conteúdo x entre a posição apontada por p e aposição seguinte [por que seguinte e não anterior?] em uma lista encadeada. É claro que isso só faz sentido se p é diferente de NULL.

// Esta função insere uma nova celula em uma
// lista encadeada.A nova celula tem conteudo
// x e é inserida entre a celula apontada por
// p e a seguinte. Supõe-se que p != NULL.

void insere (int x, celula *p)
{
celula *nova;
nova = mallocX(sizeof (celula));
nova->conteudo = x;
nova->prox = p->prox;
p->prox = nova;
}

Veja que maravilha! Não é preciso movimentar células para "criar espaço" para um nova célula, como fizemos...
tracking img