Menu


terça-feira, 18 de maio de 2010

Listas com Parametros Auxiliares

As novas listas possuem a facilidade na busca das informações da lista com o auxilio de ponteiros no fim e no inicio da lista.

A criação da lista muda em que possui um novo parâmetro que estará no final da lista.

void cria (lista * * inicio, lista * * fim)
{
*inicio = NULL;
*fim = NULL;
}

A lista agora possui dois parâmetros que delimitam a lista entre um nó do início (começo da lista) e outro nó no fim (término da lista).

Os métodos de implementar os dados dentro da lista são parecidos com a lista lineares porém agora é preciso que o ponteiro auxiliar “*fim” esteja localizado na lista.

void Inserir_inicio (lista * * Inicio, Lista * * fim, int v)
{
lista *p;
p = (lista * ) calloc (1, sizeof (lista));
p->info = v;
p->prox = * inicio;
if ( * inicio == NULL )
*fim = p;
*inicio = p; }

A lista agora ao inserir uma nova informação precisará verificar se existe algum nó na lista pela condição “if” que verifica se a lista está vazia em que o ponteiro “Inicio” está apontando para um valor nulo com isso o ponteiro “Fim” pode ser inserido na lista.

Caso a lista não tenha nenhum nó os ponteiros “Inicio” e “Fim” estarão no primeiro nó da lista para que esse método de inserção funcione, em que esse método insere os nós no início da lista e então a cada novo nó o ponteiro “Fim” estará no último nó da lista, sendo assim o ponteiro “Inicio” passará para o começo da lista no momento em que o usuário inserir uma nova informação.

Na implementação de novos valores no final da lista também será necessário que o ponteiro “Fim” esteja adequado no método.

void Inserir_Fim (lista * * inicio, lista * * fim, int v)
{
lista *p;
p = (lista *) calloc (1, sizeof(lista))
p->info = v;
p->prox = NULL;
if(* inicio == NULL)
*inicio =p;
else
(*fim)->prox = p;
*fim = p;
}

Esse método ao invés do ponteiro “Inicio” andar quando um novo nó é inserido, agora o ponteiro “Fim” passará para o nó que será inserido na lista.

É verificado se a lista possui algum nó pela condição que o ponteiro “Inicio” não está apontando para nenhum nó, ou seja, ponteiro “Inicio” é igual à “NULL”, se a condição for verdadeira então o ponteiro “Inicio” e o ponteiro “Fim” estarão no mesmo nó ou o primeiro nó da lista, caso a lista já tenha algum nó a condição do “if” será falsa e com isso o nó da posição que o ponteiro “Fim” se encontra apontando para o “prox” estará para a posição que a memória alocada “p” está, em outras palavras o próximo nó será inserido no fim da lista cada vez que esse método for executado.

A lista simplesmente encadeada não apresenta uma grande inovação no conceito de listas. Esse tipo de método de implementar dados somente apresenta um novo parâmetro auxiliar, localizado no fim da lista.



O método de lista simplesmente encadeada é bastante útil em que o programador tem a possibilidade de manipular com mais facilidade a lista que está sendo implementada.

Nenhum comentário:

Postar um comentário