Código de uma agenda usando lista simplesmente encadeada em linguagem c
#include
#include
#include
#include
#include
//estrutura da agenda usando lista encadeada typedef struct Lista{ char nome[30]; unsigned int tel; struct Lista *prox;
}lista;
//ciar lista vazia lista *cria_vazia(){ return NULL;
}
//Cadastrar novo lista *cadastrar(lista *l, char nome[], int tel){ int i; lista *novo=(lista*)malloc(sizeof(lista)); if(novo!=NULL){ for(i=0; nome[i] != '\0'; i++){ novo->nome[i]=nome[i]; } novo->nome[i]='\0'; novo->tel=tel; novo->prox=l; return novo; }else{ printf ("\n Erro de alocação de memória\n"); system("pause>>NULL"); exit(1); }
}
//listar toda a agenda void listar_agenda(lista *l){ lista *aux; int i=0; for (aux=l; aux!=NULL; aux=aux->prox){ i++; printf ("%d => %s\n",i,aux->nome); printf (" => %d \n\n",aux->tel); } system ("pause>>NULL");
}
//faz a busca por nome na agenda int buscar_nome(lista *l,char nome[30]){ lista *aux; for(aux=l;aux!=NULL;aux=aux->prox){ if (strcmp(aux->nome,nome)==0){ printf ("=> %s\n",aux->nome); printf (" %d",aux->tel); system ("pause>>NULL"); return; } } printf ("Nome não encontrado."); system ("pause>>NULL");
}
//função desnecessária que busca um numero na agenda
lista* buscar_numero(lista* l,int num){ lista *aux; for(aux=l;aux!=NULL;aux=aux->prox){ if (aux->tel==num){ printf ("=> %s\n",aux->nome); printf (" %d",aux->tel); system ("pause>>NULL"); return aux; } } printf ("Número nao encontrado\n"); system ("pause>>NULL"); return;
}
//função que remove um elemento da lista
lista *remove_contato_nome(lista *l, char nome[30]){ lista *ptr, *antes; if (l==NULL){ return 0; // Lista vazia !!! }else{ // Caso a lista nao esteja vazia ptr = l; antes = l; while (ptr !=NULL){ if (strcmp(ptr->nome,nome)==0){ if (ptr == l){ // se esta