Como alterar um registro usando lista encadeadaem C

0 respostas
Michellepires

ai pessoal, preciso urgente de uma dica de como alterar um cadastro em uma lista encadeada.
por favor me deem uma ajudinha.
o codigo e o seguinte:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<alloc.h>
#include<conio.h>

typedef struct cad{

char nome[30];

char end[40];

char cid[15];

char est[3];

char tel[12];

struct cad *prox;

}entrada_lista;

entrada_lista *inicio;
int agenda(void);

void inserir(void);

void alterar(void);

void remover(void);

void listartodos(void);

void listarultimo(void);

int main(void){

inicio=NULL;
            for (;;){
                switch(agenda()){
                               case 1:inserir();
                                    break;
                               case 2:alterar();
                                    break;
                               case 3:remover();
                                    break;
                               case 4:listartodos();
                                    break;
                               case 5:listarultimo();
                                    break;
                               case 6:exit(0);
                               }
                               }
                              }
int agenda(void){

int c;

system(“cls”);

printf("\t\t********************************\n");

printf("\t\t*********** AGENDA <em><strong><strong><strong><strong><strong><strong>\n");

printf("\t\t</strong></strong></strong></strong></strong></strong></em>*******************\n");

printf("\n1 - Inserir\n");

printf("\n2 - Alterar\n");

printf("\n3 - Remover Ultimo Contato\n");

printf("\n4 - Listar Todos\n");

printf("\n5 - Listar Ultimo\n");

printf("\n6 - Sair\n\n");
do{
            printf("Opcao:");
            scanf("%d",&c);
            }while (c<1||c>6);
            return c;
            }

void inserir(void){
entrada_lista *info;

info=(entrada_lista *)malloc(sizeof(entrada_lista));
 if (!info){
            printf("\nSem Memoria");
            return;
            }
            system("cls");
            printf("\nDigite o Nome:");
            gets(info->nome);          
            gets(info->nome);                
            printf("\nDigite o Endereco:");
            gets(info->end);               
            printf("\nDigite a Cidade:");
            gets(info->cid);
            printf("\nDigite o Estado:");
            gets(info->est);
            printf("\nDigite o Telefone:");
            gets(info->tel);
            
            info->prox=inicio;
            inicio=info;
            }
void alterar(void){

char s;

entrada_lista *alte;

/*alte=(entrada_lista <em>)malloc(sizeof(entrada_lista));</em>/

system(“cls”);

entrada_lista *percorre_lista;

system(“cls”);

percorre_lista=inicio;

printf("\n\t\t\tContatos Armazenados\n\n");

while (percorre_lista!=NULL){

printf("\nNome: %s",percorre_lista->nome);

printf("\nEndereco: %s",percorre_lista->end);

printf("\nCidade: %s",percorre_lista->cid);

printf("\nEstado: %s",percorre_lista->est);

printf("\nTelefone: %s\n",percorre_lista->tel);

printf("\nDeseja Alterar Este Contato?");

scanf("%c",s);

if (s == ‘S’ || ‘s’){

system(“cls”);

printf("\nDigite o Novo Nome:");

gets(alte->nome);

gets(alte->nome);

printf("\nDigite o Novo Endereco:");

gets(alte->end);

printf("\nDigite a Nova Cidade:");

gets(alte->cid);

printf("\nDigite o Novo Estado:");

gets(alte->est);

printf("\nDigite o Novo Telefone:");

gets(alte->tel);

}

percorre_lista=percorre_lista->prox;

}

}
void remover(void){

entrada_lista *aux;

if (aux==NULL){

system(“cls”);

printf(“ERRO!!!”);

return;

}

else{

aux=inicio;

inicio=inicio->prox;

free(aux);

}

}
void listartodos(void){

entrada_lista *percorre_lista;

system(“cls”);

percorre_lista=inicio;

printf("\n\t\t\tContatos Armazenados\n\n");

while (percorre_lista!=NULL){
printf("\nNome: %s",percorre_lista->nome);
                       printf("\nEndereco: %s",percorre_lista->end);
                       printf("\nCidade: %s",percorre_lista->cid);
                       printf("\nEstado: %s",percorre_lista->est);
                       printf("\nTelefone: %s\n",percorre_lista->tel);
                       percorre_lista=percorre_lista->prox;
                       }

getch();

}

void listarultimo(void){

entrada_lista *percorre_lista;
 system("cls");
 percorre_lista=inicio;
 printf("\n\t\t\tUltimo Contato Armazenado\n\n");
 while (percorre_lista!=NULL){
                        printf("\nNome: %s",percorre_lista->nome);
                        printf("\nEndereco: %s",percorre_lista->end);
                        printf("\nCidade: %s",percorre_lista->cid);
                        printf("\nEstado: %s",percorre_lista->est);
                        printf("\nTelefone: %s\n",percorre_lista->tel);
                        percorre_lista=NULL;
                        }

getch();
}

Criado 5 de dezembro de 2006
Respostas 0
Participantes 1