Jump to content
Fórum Script Brasil
  • 0

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


Question

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 to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148894
    • Total Posts
      644916
×
×
  • Create New...