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

Lista Ligada Estática


nara

Pergunta

unsure.gif 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

  • 0

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

Link para o comentário
Compartilhar em outros sites

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