Cadastro de users apartir de tecnica com lista duplamente encadeada
967 palavras
4 páginas
/*********************************************************Trabalho 1: Programa de Cadastamento de Usuarios a partir da técnica com listas duplamente encadeadas.
***********************************************************/
#include
#include
//Estrutura do Campo das informaçoes do Usuario. typedef struct{ char nome[50]; int id;
}dado_t;
//Estrutura do nodo da lista. typedef struct SN{ dado_t info; struct SN *pproximo; struct SN *panterior;
}nodo_t;
//Estrutura da lista. typedef struct{ nodo_t *pprimeiro; nodo_t *pultimo;
}lista_t;
//*********************************************************** int clear(lista_t *lista); //* int insere(lista_t *lista, nodo_t *nodo); //* int tira(lista_t *lista, int iddel); //* //Declaracoes das funcoes utilizadas no programa. int listar(lista_t *lista); //* //*
//********************************************************//*
//Função para limpar e resetar a lista. int clear(lista_t *lista){ nodo_t *proximo=NULL, *anterior=NULL;
if(lista->pprimeiro==NULL){//Testa se a lista ja esta vazia. printf("\nA lista ja esta vazia"); }else{ for(anterior=lista->pprimeiro; anterior!=NULL;anterior=proximo){//Percorre a lista limpando-a. proximo=anterior->pproximo; free(anterior); } lista->pprimeiro=NULL; lista->pultimo=NULL; return 1; } return 0;
}
//Funçao que insere um item na lista. int insere(lista_t *lista, nodo_t *nodo){ nodo_t *pAtual, *pAnterior; if(lista->pprimeiro==NULL){//Testa se a lista esta vazia. lista->pprimeiro=nodo; lista->pultimo=nodo; nodo->pproximo=NULL; nodo->panterior=NULL; return 1; }else if(lista->pprimeiro->info.id > nodo->info.id){//Testa se o ID do primeiro da lista e maior do ID inserido. nodo->pproximo=lista->pprimeiro; nodo->panterior=NULL; lista->pprimeiro->panterior=nodo;