Boa noite, alguém pode me ajudar a colocar a opção excluir nesse código, tem que procurar pelo nome da pessoa e fazer a exclusão, segue o que eu conseguir fazer até agora.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <locale.h>
struct stNo {
int info, idade, celular;
char nome[100],endereco[100], sexo, cidade[80], email[40];
struct stNo *prox;
};
struct stNo *cria_no() {
struct stNo *p;
if ((p = (struct stNo *) malloc(sizeof(struct stNo))) == NULL)
return NULL;
else {
p->prox = NULL;
return p;
}
}
void insereLista(struct stNo **list){
struct stNo *p,*q;
int n, idade, celular;
char name[100], endereco[100], sexo, cidade[80], email[40];
fflush(stdin);
printf("\nDigite o valor do nó:");
scanf("%i",&n);
fflush(stdin);
printf("\nDigite o nome:");
gets(name);
fflush(stdin);
//printf("\nDigite o seu sexo [F][M]:");
//scanf("%c",&sexo);
//fflush(stdin);
//printf("\nDigite sua idade:");
//scanf("%i",&idade);
//fflush(stdin);
//printf("\nDigite seu endereço:");
//gets(endereco);
//fflush(stdin);
//printf("\nDigite sua cidade:");
//gets(cidade);
//fflush(stdin);
//printf("\nDigite seu celular:");
//scanf("%i",&celular);
//fflush(stdin);
//printf("\nDigite seu e-mail:");
//gets(email);
//fflush(stdin);
if(*list==NULL){ //lista vazia
p = cria_no();
*list = p;
p->prox = NULL;
p->info = n;
strcpy(p->nome,name);
p->sexo=sexo;
p->idade=idade;
strcpy(p->endereco,endereco);
strcpy(p->cidade,cidade);
p->celular=celular;
strcpy(p->email,email);
}
else{
p=*list;
while(p->prox!=NULL)
p=p->prox;// posiciona no final da lista
q = cria_no();
p->prox = q;
q->prox = NULL;
q->info = n;
strcpy(q->nome,name);
*list = q;
};
};
void mostraLista(struct stNo **list){
struct stNo *p;
if(*list!=NULL){
p=*list;
while(p->prox!=NULL){
printf(" %d->",p->info);
p = p->prox;
};
printf(" %d->",p->info);
}
else printf("\nLista Vazia");
};
void excluirLista(struct stNo **list){
struct stNo *p,*q;
int n;
char name[100];
if(*list!=NULL){ //lista vazia
p = *list;
while (p->prox!=NULL && strcmp(p->nome, name) != 0) {
p = p->prox;
};
if(strcmp(p->nome, name) == 0){
printf("\nCódigo: %d",p->info);
printf("\nNome: %s",p->nome);
if(p->prox==NULL){
free§;
*list =NULL;
}else{
while(p->prox!=NULL){
q=p;
p=p->prox;
}
q->prox=NULL;
free§;
else{
q=p->prox;
free§;
*list=q;
}
else{
q->prox=NULL;
free§;
}
}else{
printf("\nLista Vazia");
}
};
void visualizarLista(struct stNo **list){
struct stNo *p;
int n;
char name[100];
fflush(stdin);
printf("\nDigite o nome:");
gets(name);
fflush(stdin);
if (*list!=NULL) {
p = *list;
while (p->prox!=NULL && strcmp(p->nome, name) != 0) {
p = p->prox;
};
if(strcmp(p->nome, name) == 0){
printf("\nCódigo: %d",p->info);
printf("\nNome: %s",p->nome);
//printf("\nSexo: %c",p->sexo);
//printf("\nIdade: %d",p->idade);
//printf("\nEndereço: %s",p->endereco);
//printf("\nCidade: %s",p->cidade);
//printf("\nCelular: %i",p->celular);
//printf("\nE-mail: %s",p->email);
};
}
else printf("\nLista Vazia");
};
main(){
setlocale(LC_ALL,“Portuguese”);
struct stNo *lista;
int menu;
lista = NULL; // inicializando a lista vazia
do{
system(“cls”);
printf("\n");
mostraLista(&lista);
printf("\n\n");
printf("[1-Inserir] “);
printf(”[2-Visualizar] “);
printf(”[3-Excluir] “);
printf(”[4-Sair] “);
printf(“Opção:”);
scanf(”%i",&menu);
switch(menu){
case 1 : insereLista(&lista);
break;
case 2 : visualizarLista(&lista);
break;
case 3 : excluirLista(&lista);
break;
case 4 : printf("\nSaindo…");
break;
default: printf("\nCódigo Inválido");
}
printf("\n");system(“pause”);
}while(menu!=3);
}