lista duplamente encadeada
#include
typedef struct pessoa
{
char cpf[13]; char nome[40]; int idade;
} Pessoa; typedef struct No
{
Pessoa dados; struct No*prox; struct No*ant;
} No;
No *inserir(No *,Pessoa); void listar(No *);
No *consultar(char*,No*); int alterar(No *,Pessoa); int remover(No **,char *);
No *liberar(No *);
#endif // LISTA_DUPLAMENTE_ENCADEADA_H_INCLUDED
#include"Lista duplamente encadeada.h"
//essa funcao substituira o scanf int lerInteiro()
{
char entrada[10]; fgets(entrada,10,stdin); return atoi(entrada);
}
int main()
{
No *lista=NULL; No *resul; int opcao; char chave[13]; Pessoa pessoa; do { printf("\n*****Menu principal*****\n"); printf("\n1-inserir\n2-lista\n3-consultar\n4-alterar\n5-remover\n6-liberar\n7-sair\n"); printf("\nEscolha uma das opcoes acima\n"); opcao=lerInteiro();
switch(opcao) { case 1: printf("\ninserindo um elemento na lista encadeada\n"); printf("\nDigite o nome da pessoa:\n"); fgets(pessoa.nome,40,stdin); printf("\nDigite o cpf da pessoa:\n"); fgets(pessoa.cpf,13,stdin);
printf("\nDigite a idade da pessoa:\n"); pessoa.idade=lerInteiro(); lista=inserir(lista,pessoa);// a funcao inserir etsa retornando break; case 2: printf("\nlistando elementos\n"); listar(lista); break; case 3: printf("\nconsultando um elemento:\n"); printf("\ndigite o cpf para consultar\n"); fgets(chave,13,stdin); resul=consultar(chave,lista); if(resul==NULL) printf("\no cpf nao foi encontrado\n"); else pessoa=resul->dados; printf("\no nome encontrado eh:%s\n",pessoa.nome); printf("\ncpf