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

Lista com apontador - - erro


Guest Wallace

Pergunta

ae turma beleza...

novato na area... rsrs

to quebrando a cabeça com este programa em C

ocorre o seguinte: devo inserir na lista com apontador, na posição informada pelo usuário. A posição será um número integer e o elemento será inserido depois do item correspondente à aquela posição.

uso o C++Builder 3

meu codigo em momento algum da erro de compilacao e se eu inicio o console com a InserePosicao no caso 1 funciona beleza depois posso inserir no inicio ou apos o utimo com outros procedimentos funciona ok mando Imprimir fik tudo beleza mas se tento fazer o procedimento InsereInicio depois InsereUltimo e em seguida InserePosicao acontece erro, trava o programa.

eis meu codigo

void InserePosicao (int po, TLista &L, Elemento &W)
{  
    int co=0,i;
    Celula *x,*y;
    if ( !(Vazia(L))){
        x=L.Primeiro->Prox;
        i=1;
    }
    while (i<po){
        x=x->Prox;
        co+=1;
        y=(Celula*) malloc (sizeof(Celula));
        (*y).Prox =(*x).Prox;
        (*x).Prox=y;
        (*y).Item=W;
        }
    x=(Celula*) malloc (sizeof(Celula));
    L.Primeiro->Prox=x;
    (*x).Prox=NULL;
    L.Ultimo=x;
    (*L.Ultimo).Item=W;
}

vou ter prova na facu sobre essa materia na proxima semana e gostaria de aprender...

grato.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

primero, olha como você abre o while:

while (i<po)

mas em nenhum momento dentro dele você altera ou o i ou o po. ou seja, ele vai ficar la pra sempre.

outra coisa, porque a cada passagem do while, você aloca o y?? você não devia fazer isso uma vez só, q seria quando encontrasse a posicao certa (a q veio como parametro)??

Link para o comentário
Compartilhar em outros sites

  • 0

muito mas muito obrigado cara... valeu demais...

ta file agora

postando o codigo caso alguém precise

void InsereP (int po, TLista &L, Elemento &W)
{  
    int i;
    Celula *x,*y;
    if ( !(Vazia(L))){
        x=L.Primeiro->Prox;
        i=1;
    }
    while (i<po){
        x=x->Prox;
        i++;
        }
    y=(Celula*) malloc (sizeof(Celula));
    y->Prox =x->Prox;
    x->Prox=y;
    y->Item=W;
}

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