Ir para conteúdo
Fórum Script Brasil
  • 0

Como faço para colocar a opção excluir em lista simples encadeada em C


Robson Nunes

Pergunta

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. Eu até coloquei a opção excluir ali mas não ta funcionando.
 

#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(p);
        *list =NULL;
      }else{
        while(p->prox!=NULL){
        q=p;
        p=p->prox;
      }
      q->prox=NULL;
      free(p);

      else{
      q=p->prox;
      free(p);
      *list=q;
    }
    else{
      q->prox=NULL;
      free(p);
    }
  }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);
} 
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...