nara Postado Setembro 27, 2005 Denunciar Share Postado Setembro 27, 2005 não sei onde esta o erro mas na hora de imprimir entra em looping e só imprime o ultimo elemento ,#include <iostream.h>typedef int elemento_lista;struct no { elemento_lista info; int link;}; const MAXILISTA =3;void criar_vazia (no local [], int & pri, int & disp, int MAXILISTA){ int i =0; for (i = 0; i < MAXILISTA - 1; i ++) { local.link = i+1; } local [MAXILISTA].link = -1; disp = 0; pri = 1;}int novo_no (no local[], int& disp){ int n; if (disp == -1) return -1; n = disp; return n;}int inserir_inicio_lista (no local [], int & pri, int &disp, elemento_lista v){ int aux; aux = novo_no(local, disp); if (aux ==-1) return -1; local[aux].info = v; local[aux].link = pri; pri = aux; return 1;}void imprimir_lista (no local [], int & pri){ int aux; aux = pri; if (aux == -1)// essa não e a condição de parada? cout<<"Lista Vazia!"; while (aux !=-1 ) { cout << local[aux].info; aux = local[aux].link; }}void main (){ int pri =0, disp,v, opcao, variavel; no local[MAXILISTA]; criar_vazia(local,pri, disp, MAXILISTA); do { cout<<" MENU!!"<<endl<<endl<<endl; cout<<"<1> INSERIR NO INICIO DA LISTA"<<endl <<"<2> MOSTRAR ELEMENTOS DA LISTA"<<endl <<"<3> SAIR"<<endl; cin>>opcao; switch(opcao) { case 1: novo_no (local, disp); cout<<"Digite um valor a ser inserido: "<<flush; cin>>v; variavel = inserir_inicio_lista (local , pri, disp, v); break; case 2: imprimir_lista (local, pri); break; case 3: break; default: cout<<"valor invalido "<<endl; } } while (opcao !=3); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Setembro 30, 2005 Denunciar Share Postado Setembro 30, 2005 Note que em todas as rotinas da lista você passa o parâmetro "pri" *por referência*. Isso quer dizer que o mesmo é alterado fora da rotina. Daí, quando você pede para imprimir a lista e passa qual é o primeiro elemento (que deveria ser 0) na verdade você passa o último (por isso que só aparece um). Não seria isso ou eu viajei?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nara
não sei onde esta o erro mas na hora de imprimir entra em looping e só imprime o ultimo elemento ,
#include <iostream.h>
typedef int elemento_lista;
struct no {
elemento_lista info;
int link;
};
const MAXILISTA =3;
void criar_vazia (no local [], int & pri, int & disp, int MAXILISTA)
{
int i =0;
for (i = 0; i < MAXILISTA - 1; i ++)
{
local.link = i+1;
}
local [MAXILISTA].link = -1;
disp = 0;
pri = 1;
}
int novo_no (no local[], int& disp)
{
int n;
if (disp == -1)
return -1;
n = disp;
return n;
}
int inserir_inicio_lista (no local [], int & pri, int &disp, elemento_lista v)
{
int aux;
aux = novo_no(local, disp);
if (aux ==-1)
return -1;
local[aux].info = v;
local[aux].link = pri;
pri = aux;
return 1;
}
void imprimir_lista (no local [], int & pri)
{
int aux;
aux = pri;
if (aux == -1)// essa não e a condição de parada?
cout<<"Lista Vazia!";
while (aux !=-1 )
{
cout << local[aux].info;
aux = local[aux].link;
}
}
void main ()
{
int pri =0, disp,v, opcao, variavel;
no local[MAXILISTA];
criar_vazia(local,pri, disp, MAXILISTA);
do
{
cout<<" MENU!!"<<endl<<endl<<endl;
cout<<"<1> INSERIR NO INICIO DA LISTA"<<endl
<<"<2> MOSTRAR ELEMENTOS DA LISTA"<<endl
<<"<3> SAIR"<<endl;
cin>>opcao;
switch(opcao)
{
case 1:
novo_no (local, disp);
cout<<"Digite um valor a ser inserido: "<<flush;
cin>>v;
variavel = inserir_inicio_lista (local , pri, disp, v);
break;
case 2:
imprimir_lista (local, pri);
break;
case 3:
break;
default:
cout<<"valor invalido "<<endl;
}
}
while (opcao !=3);
}
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.