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

Lista - erro na compilação


Sweetie_

Pergunta

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!...");

}

}

}

Editado por Sweetie_
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,2k
    • Posts
      652k
×
×
  • Criar Novo...