Ir ao conteúdo

Lista Encadeada Ordenada


Fortes1975

Posts recomendados

Postado

Galera é o seguinte.

Estou fazendo um programinha de Agenda. O código que segue esta com erro e não estou conseguindo visualizar, se tiver alguém para me ajudar eu agradeço. Abraços.

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

#include <malloc.h>

struct Agenda

{

char nome[30];

char ende[50];

char tele[12];

struct Agenda *prox;

};

int main(void)

{

struct Agenda *REG;

struct Agenda *PRI; // ponteiro para a primeira entrada da lista

struct Agenda *ULT; // ponteiro para a ultima entrada da lista

PRI=NULL;

ULT=NULL;

//int POS;

char OP, NOME[30];

int Insere (Agenda *reg, Agenda **pri, Agenda **ult);

int Listar (Agenda **pri, Agenda **ult);

int Consultar (Agenda **pri, Agenda **ult, char nome[]);

do

{

cout<<"\n\n\n-------------------------------------------------------------------\n";

cout<<"Agenda usando lista encadeada ordenada \n";

cout<<"-------------------------------------------------------------------\n\n";

cout<<"opções\n";

cout<<" 1 - Inserir\n";

cout<<" 2 - Listar\n";

//cout<<" 3 - Retirar\n";

cout<<" 4 - Consulta por nome\n";

cout<<" 5 - Zerar\n";

cout<<" 6 - Sair\n";

cout<<"Digite a opcao : ";

cin>>OP;

switch(OP)

{

case '1' :

if((REG = (Agenda *) malloc(sizeof(Agenda))) == NULL)

{

cout<<"Nao ha espaco para alocar";

getch();

return 0;

}

cout<<"\n\n";

cout<<"Entre com os dados\n";

cout<<"Digite o nome........: ";

cin>>REG->nome;

cout<<"Digite o endereco....: ";

cin>>REG->ende;

cout<<"Digite o telefone....: ";

cin>>REG->tele;

if(Insere (REG, &PRI, &ULT)== 0)

cout<<"\n Lista cheia";

break;

case '2' :

if(Listar(&PRI, &ULT) == 0)

cout<<"\nNao ha registros para consultar ";

break;

case '4' :

if(Consultar(&PRI, &ULT, NOME)==0)

cout<<"\nNao possui este registro";

break;

case '5' : PRI=NULL;

ULT=NULL;

free(REG);

break;

case '6' :

cout<<"\nFim do Programa!";

break;

default:

cout<<"opcao invalida!";

break;

}

} while(OP != '6');

free(REG);

return 0;

}

/*----------------------------------------------------------------------*/

int Insere (Agenda *reg, Agenda **pri, Agenda **ult)

{

Agenda *aux, *cor;

if (*pri == NULL) // lista vazia

{

reg->prox = NULL;

*ult = reg;

*pri = reg;

return 1;

}

if (strcmp(reg->nome,(*pri)->nome)<0) //menor que o primeiro

{

reg->prox=*pri;

*pri=reg;

return 1;

}

if (strcmp(reg->nome,(*ult)->nome)>0) //maior que o ultimo

{

reg->prox=NULL;

(*ult)->prox=reg;

*ult=reg;

return 1;

}

cor = (*pri)->prox;

aux = *pri;

while(cor != NULL)

{

if(strcmp(reg->nome, cor->nome) < 0)

{

aux->prox = reg;

reg->prox = cor;

return 1;

}

aux=cor;

cor=cor->prox;

}

(*ult)->prox = reg;

reg->prox = NULL;

*ult = reg;

return 1;

}

int Listar (Agenda **pri, Agenda **ult)

{

struct Agenda *reg_aux;

reg_aux = *pri;

if(pri == NULL)

return 0;

while(reg_aux != NULL)

{

cout<<"\nO nome.......: "<<reg_aux->nome;

cout<<"\nO endereco...: "<<reg_aux->ende;

cout<<"\nO telefone...: "<<reg_aux->tele;

cout<<"\n";

reg_aux = reg_aux->prox;

}

return 1;

}

int Consultar (Agenda **pri, Agenda **ult, char nome[])

{

Agenda aux;

if(strcmp((*ult)->nome, NOME)==0)

{

cout<<"Nome.......: "<<(*ult)->nome;

cout<<"\nEndereco..: "<<(*ult)->ende;

cout<<"\ntelefone..: "<<(*ult)->tele;

return 1;

}

aux=*pri;

while(aux != *ult)

{

if(strcmp((*ult)->nome, NOME)==0)

{

cout<<"Nome.......: "<<(*ult)->nome;

cout<<"\nEndereco..: "<<(*ult)->ende;

cout<<"\ntelefone..: "<<(*ult)->tele;

return 1;

}

aux=aux->prox;

}

return 0;

}

  • Membro VIP
Postado

Ainda precisa de ajuda?

Tem bastante código ai, poderia nos ajudar dizendo o que não ocorreu conforme o esperado?

É eu sei, é uma pergunta chata e seria mais fácil se eu jogasse isso em um compilador e testasse para descobrir quais os erros, mas não tenho tanto tempo assim...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...