Programar em C/Listas encadeadas: diferenças entre revisões
Saltar para a navegação
Saltar para a pesquisa
Programar em C/Listas encadeadas (editar)
Revisão das 03h02min de 23 de junho de 2009
, 23 de junho de 2009sem resumo de edição
[edição não verificada] | [edição não verificada] |
Sem resumo de edição |
Sem resumo de edição |
||
Listas encadeadas são estruturas de dados lineares e dinâmicas, a grande vantagem que elas possuem em relação ao uso de vetor é o fato de terem tamanho máximo relativamente infinito (o tamanho máximo é o da memória do computador), ao mesmo tempo que podem ter o tamanho mínimo de 1 elemento evitando o desperdício de memória.
==
Não existe nem uma normalização quanto as primitivas usadas para a manipulação de uma lista.<br>
Em-baixo você pode ver uma lista com algumas delas .
* Colocar o índice sobre o primeiro elemento da lista.
Cada nó de uma lista encadeada irá possuir guardar o valor do nó e o endereço do próximo nó.▼
* Colocar o índice sobre o ultimo elemento da lista .
* Colocar o índice sobre o elemento que segue o elemento atual .
* Colocar o índice sobre o elemento que precede o elemento atual .
* Verificar se a lista esta vazia : Se a lista estiver vazia retorna verdadeiro, se não falso.
* Verificar se é o primeiro elemento : Retorna verdadeiro se o elemento atual é o primeiro, se não falso.
* Verificar se é o ultimo elemento : Retorna verdadeiro se o elemento atual é o ultimo, se não falso.
* Verificar o numero de elementos da lista : Retorna o numero de elementos da lista.
* Adicionar um elemento no inicio : Adicionar um elemento antes do primeiro elemento da lista .
* Adicionar um elemento no fim : Adicionar um elemento depois do ultimo elemento da lista .
* Inserção : Inserir um elemento antes do elemento atual .
* Troca : Trocar o elemento atual .
* Remoção : Remover o elemento atual .
==Lista encadeada linear==
▲Cada nó ou elemento de uma lista encadeada irá possuir guardar o valor do nó e o endereço do próximo nó.
Em uma lista encadeada linear o ultimo elemento aponta para NULL .
<source lang="C">
struct No{
char *
struct No *
};
</source>
<source lang="C">
void
*
}
</source>
==Inserção==
Existem
===Inserção no início===
<source lang="C">
void
struct No *
/** Alocação dinâmica da memoria */
puts( "Falta Memoria\n"); return -1 ;
}
p_Novo->p_dados = p_String;
if(*
*
}else{
*
}
}
<source lang="C">
void
struct No *
puts( "Falta Memoria\n"); return -1 ;
p_Novo->p_dados = p_String;
p_Novo->p_prox = NULL;
if(*
*
struct No *
while(
}
}
}
==Remoção==
Assim como na inserção também existem
===Remoção no início===
<source lang="C">
void
if(*
else{
struct No *
*
free(
}
}
<source lang="C">
void
if(*
else{
struct No *
while(
}
free(
}
}
<source lang="C">
void
if(
else{
struct No *
while(
}
while(
if(
printf(" <- %s",
}
}
printf(" <- %s",
}
}
===Da raiz para o fim===
<source lang="C">
void
if(
else{
struct No *
while(
printf("%s",
}
}
|