Ir para conteúdo
Fórum Script Brasil

Sweetie_

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Sweetie_

Sweetie_'s Achievements

0

Reputação

  1. Oi, galera. Então, gostaria muito de pedir a ajuda de vocês pra eu resolver esse probleminha. É um programa que tem as opções: Verifica se a lista esta vazia, Insere item no início da lista, Insere item no fim da lista, Remove itens da lista, Localiza itens da lista, Informa a quantidade de elementos existentes na lista, Imprime itens da lista, Sair. Está dando erro logo que aperta o botão 1 para criar a lista, e as opções 2 e 3 dão erro logo no final. Bom, e todos os outros estão dando erro também, talvez devido à criação da lista... Enfim, o código está abaixo. Agradeço MUITO qualquer ajuda!! Obrigada! #include <stdio.h>#include <conio.h> #include <malloc.h> #include <string.h> typedef struct { int chave; char nome[30]; int i, idade; } TipoItem; struct Celula { TipoItem Item; Celula* Prox; }; typedef struct { Celula* Primeiro; Celula* Ultimo; Celula* Proximo; } TipoLista; //Cria Lista vazia void FLVazia (TipoLista * Lista) { Lista ->Primeiro=(Celula*)malloc(sizeof(Celula)); Lista ->Ultimo=Lista->Primeiro; Lista ->Primeiro->Prox=NULL; } //Verifica se a lista está vazia int Vazia (TipoLista Lista) { return (Lista.Primeiro == Lista.Ultimo); } //Insere elemento no inicio da lista void InsereInicio(int jaux, TipoItem x, TipoLista *Lista) { int i; Celula *paux, *Aux; paux = (Celula*) malloc (sizeof(Celula)); paux -> Item = x; paux -> Prox = Lista -> Primeiro -> Prox; Lista -> Primeiro ->Prox = paux; } //Insere elemento no fim da lista void InsereFim (TipoItem x, TipoLista *Lista) { Lista -> Ultimo -> Prox = (Celula*) malloc (sizeof(Celula)); Lista -> Ultimo = Lista -> Ultimo -> Prox; Lista -> Ultimo -> Item = x; Lista -> Ultimo -> Prox = NULL; } //Exclui elemento que se encontra na posição informada void Retira (Celula* p, TipoLista *Lista) { Celula* q; if (Vazia(*Lista)||p->Prox==NULL) { printf ("Erro: a posicao não existe.\n"); getch(); } else { q=p->Prox; p->Prox=q->Prox; if (p->Prox==NULL) Lista->Ultimo=p; free(q); } } //Encontra o endereco de um elemento a partir do seu codigo Celula* Localiza (int cod, TipoLista *Lista) { Celula* paux; paux=Lista->Primeiro; while ((paux->Prox != NULL) && (paux->Prox->Item.chave != cod)) { paux=paux->Prox; } return (paux); } //Imprime os elementos da lista void Imprime (TipoLista Lista) { Celula* Aux; int i=1; Aux = Lista.Primeiro -> Prox; while (Aux != NULL) { printf ("\n\nCodigo do elemento %d: %d", i, Aux->Item.chave); printf ("\nNome do elemento %d: %s", i, Aux->Item.nome); printf ("\nIdade do elemento %d: %d", i, Aux->Item.idade); getch(); Aux=Aux->Prox; i++; } } main() { char op; int iaux, jaux=0; TipoLista *Lista_Real; TipoItem Item_Real; Celula* ponteiro; while (op!='0') { printf ("\n\nEscolha uma opcao: "); printf ("\n\n1 - Cria lista;"); printf ("\n2 - Verifica se a lista esta vazia;"); printf ("\n3 - Insere item no início da lista;"); printf ("\n4 - Insere item no fim da lista;"); printf ("\n5 - Remove itens da lista;"); printf ("\n6 - Localiza itens da lista;"); printf ("\n7 - Informa a quantidade de elementos existentes na lista;"); printf ("\n8 - Imprime itens da lista;"); printf ("\n\n0 - Sair;\n"); op=getche(); switch (op) { case '1': FLVazia (Lista_Real); break; case '2': if (Vazia (*Lista_Real)) printf ("\nLista vazia!\n"); else printf ("\nA lista não encontra-se vazia!\n"); break; case '3': jaux++; printf ("\n\nDigite um codigo numerico para o elemento: "); scanf ("%d",&Item_Real.chave); fflush(stdin); printf ("\n\nDigite o nome do elemento a ser cadastrado: "); gets (Item_Real.nome); printf ("\n\nDigite uma idade para o elemento a ser cadastrado: "); scanf ("%d",&Item_Real.idade); InsereInicio (jaux, Item_Real, Lista_Real); break; case '4': printf ("\n\nDigite um codigo numerico para o elemento: "); scanf ("%d",&Item_Real.chave); fflush(stdin); printf ("\n\nDigite o nome do elemento a ser cadastrado: "); gets (Item_Real.nome); printf ("\n\nDigite uma idade para o elemento a ser cadastrado: "); scanf ("%d",&Item_Real.idade); InsereFim (Item_Real, Lista_Real); break; case '5': printf ("\nDigite o codigo do elemento a remover: "); scanf ("%d",&iaux); ponteiro=Localiza(iaux,Lista_Real); if (ponteiro==NULL) { printf ("\nRemocao não realizada."); getch(); } else { Retira (ponteiro, Lista_Real); } break; case '6': printf ("\nDigite o codigo do elemento a localizar: "); scanf ("%d",&iaux); ponteiro=Localiza(iaux,Lista_Real); if (ponteiro==NULL) { printf ("\nElemento não encontrado."); getch(); } else { Localiza (iaux, Lista_Real); getch(); } break; case '7': if (jaux==0) printf ("\nLista vazia\n\n"); else printf ("\nHa %d elemento(s) na lista!\n\n",jaux); getch (); break; case '8': Imprime (*Lista_Real); break; default: printf ("\n\nOpcao invalida: escolha outra opcao!..."); } } }
×
×
  • Criar Novo...