Escolar Documentos
Profissional Documentos
Cultura Documentos
http://pt.wikibooks.org/wiki/Programar_em_C/List...
ndice
1 2 3 4 Primitivas Lista encadeada linear Iniciar uma lista Insero 4.1 Insero no incio 4.2 Insero no m 5 Remoo 5.1 Remoo no incio 5.2 Remoo no m 6 Exibio 6.1 Do m para a raiz 6.2 Da raiz para o m
Primitivas
No existe nenhuma normalizao quanto as primitivas usadas para a manipulao de uma lista. Em baixo voc pode ver uma lista com algumas delas . Colocar o ndice sobre o primeiro elemento da lista. Colocar o ndice sobre o ltimo 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 . Vericar se a lista est vazia : Se a lista estiver vazia retorna verdadeiro, se no, falso. Vericar se o primeiro elemento : Retorna verdadeiro se o elemento atual
1 de 6 12-10-2011 11:53
http://pt.wikibooks.org/wiki/Programar_em_C/List...
o primeiro, se no, falso. Vericar se o ltimo elemento : Retorna verdadeiro se o elemento atual o ltimo, se no, falso. Vericar o nmero de elementos da lista : Retorna o nmero de elementos da lista. Adicionar um elemento no incio : Adicionar um elemento antes do primeiro elemento da lista . Adicionar um elemento no m : Adicionar um elemento depois do ltimo elemento da lista . Insero : Inserir um elemento antes do elemento atual . Troca : Trocar o elemento atual . Remoo : Remover o elemento atual . Listar todos os elementos da lista .
Insero
Existem 3 tipos de insero em uma lista, pode-se inserir no comeo, no nal ou entre dois elementos da lista.
Insero no incio
2 de 6 12-10-2011 11:53
http://pt.wikibooks.org/wiki/Programar_em_C/List...
int inserir_No_Inicio(struct No **p_Raiz, char *p_String){ struct No *p_Novo; /** Alocao dinmica da memoria */ if((p_Novo = (struct No *) malloc(sizeof(struct No))) == NULL ) puts( "Falta Memoria\n"); return -1 ; } p_Novo->p_dados = p_String; if(*p_Raiz == NULL){ *p_Raiz = p_Novo; p_Novo->p_prox = NULL; }else{ p_Novo->p_prox = *p_Raiz; *p_Raiz = p_Novo; } }
Insero no m
int inserir_No_Fim(struct No **p_Raiz, char *p_String){ struct No *p_Novo; if(( p_Novo = (struct No *) malloc(sizeof(struct No))) == NULL puts( "Falta Memoria\n"); return -1 ; } p_Novo->p_dados = p_String; p_Novo->p_prox = NULL; if(*p_Raiz == *p_Raiz = else{ struct No e_atual = NULL) p_Novo; *e_atual; *p_Raiz; /*@ Elemento atual*/ /*@ Primeiro elemento*/
3 de 6
12-10-2011 11:53
http://pt.wikibooks.org/wiki/Programar_em_C/List...
Remoo
Assim como na insero tambm existem 3 tipos de remoo, no incio, no m ou entre dois elementos da lista.
Remoo no incio
void remover_No_Inicio(struct No **p_Raiz){ if(*p_Raiz == NULL) printf("\nA lista ja esta vazia\n"); else{ struct No *p_atual; p_atual = *p_Raiz; *p_Raiz = (*p_Raiz)->p_prox; free(p_atual); } }
Remoo no m
void remover_No_Fim(struct No **p_Raiz){ if(*p_Raiz == NULL) printf("\nA lista ja esta vazia"); else{ struct No *p_atual, *p_anterior ; p_atual = *p_Raiz; while(p_atual->p_prox != NULL){ p_anterior = p_atual ; p_atual = p_atual->p_prox; } p_anterior->p_prox = NULL; free(p_atual); } }
Exibio
Do m para a raiz
void mostrar_Do_Fim_Para_Raiz(struct No *p_Raiz){
4 de 6
12-10-2011 11:53
http://pt.wikibooks.org/wiki/Programar_em_C/List...
if(p_Raiz == NULL) printf("\nLista vazia"); else{ struct No *p_Atual_Corredor, *p_Atual_Fim; p_Atual_Corredor = p_Raiz; p_Atual_Fim = p_Raiz; while(p_Atual_Fim->p_prox != NULL){ //ir para o ultimo elemento p_Atual_Fim = p_Atual_Fim->p_prox; } while(p_Atual_Corredor != p_Atual_Fim){ if(p_Atual_Corredor->p_prox == p_Atual_Fim){ printf(" <- %s", p_Atual_Fim->p_dados); p_Atual_Fim = p_Atual_Corredor; p_Atual_Corredor = p_Raiz; } else p_Atual_Corredor = p_Atual_Corredor->p_prox; } printf(" <- %s", p_Atual_Fim->p_dados); } }
Da raiz para o m
void mostrar_Da_Raiz_Para_Fim(struct No *p_Raiz){ if(p_Raiz == NULL) printf("\nLista vazia"); else{ struct No *p_atual; p_atual = *p_Raiz; while(p_atual != NULL){ printf("%s", p_atual->p_dados); p_atual = p_atual->p_prox; } } } Obtido em "http://pt.wikibooks.org/w/index.php?title=Programar_em_C /Listas_encadeadas&oldid=227144" Categoria: Livro/Programar em C Esta pgina foi modicada pela ltima vez s 23h10min de 8 de Outubro de 2011. Este texto disponibilizado nos termos da licena Creative Commons Atribuio-Compartilhamento pela mesma Licena 3.0 Unported; pode estar
5 de 6
12-10-2011 11:53
http://pt.wikibooks.org/wiki/Programar_em_C/List...
6 de 6
12-10-2011 11:53