Jump to content
Fórum Script Brasil
  • 0

Lista - erro na compilação


Sweetie_

Question

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

}

}

}

Edited by Sweetie_
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

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
      152.2k
    • Total Posts
      652k
×
×
  • Create New...