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

fazer lista ordenada


tuga

Pergunta

oi pessoal:

tou fazendo uma base de dados que requer uma lista ordenada e eu não tou conseguindo fazer lá muito bem....

eu vou postar a setrutura para vocês compreenderem melhor

inserir(Aptle lista, Ident idente)
{
    
     if(lista==NULL || lista->first->ident1.get_grav() < idente.get_grav())  // se a lista estiver vazia ou o elemento a inserir tiver a maior gravidade é preciso inserir no inicio da lista
     {
    inserirnoinicio(Aptle lista, Ident idente);
     }
     else
     {
    // procura a posicao que deve inserir
    while(lista!=NULL && lista->ident1.get_grav() < idente.get_grav())    // enquanto a lista for fiferente de NULL e a gravidade maior percorre a lista
    {
        lista = lista->next;
    }

    inserenaposicao(Aptle lista, Ident idente);   // ao sair do ciclo quer dizer que ou é NULL e vai inserir no fim da lista, ou encontrou um elemento com gravidade menor e tem de inserir naquela posição
        
    }
    
}
ou seja tou postando isto porque necesito de fazer as duas funções---------inserirnoinicio(Aptle lista, Ident idente); e inserenaposicao(Aptle lista, Ident idente); eu penso que no conteudo da primeira função, na inserirnoinicio(Aptle lista, Ident idente); eu teria isto, se encontrarem algum erro no código avisem pf:
inserirnoinicio(Aptle lista, Ident idente)
{     
                                              lista = (Aptle)malloc(sizeof(tle));
                                              lista->ident1=idente;
                                              lista->next = NULL;
}

bem pessoal se puderem dar uma vista de olhos e ajudarem aí agredecia muito

Obrigado

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Aqui voce acaba de perder a referencia para a lista:

lista = (Aptle)malloc(sizeof(tle));
Porque em sizeof voce colocou tle? Crie uma nova variável do tipo Aptle, não mexa em lista se não voce perde toda a referencia. Atribua o valor e faça a seguinte ligação:
novo->next=lista;

Pronto, novo terá a referencia para o início da lista

Link para o comentário
Compartilhar em outros sites

  • 0

ei kandrade

ei já fiz essa parte de codigo e compila e executa certinho mas quando introduza a informação nesta lista ele dá erro de memoria

void FE::inserirord(Aptle lista, Ident idente)
{
    if (lista->first == NULL)
        addFirst(idente);
    else 
        if (idente.get_grav() > lista->first->ident1.get_grav())
            addFirst(idente);
        else 
            if (idente.get_grav() < lista->last->ident1.get_grav()) 
                addLast(idente);
      // now must have at least two items in list
      else {
         Aptle oldIter = lista->first;
         Aptle iter = lista->first->next;
         while (iter->ident1.get_grav() > idente.get_grav())
         {
            oldIter = iter;
            iter = iter->next;
         }
         // here iter.data >= x
         // insert x into a new node before iter
         //IntListNode newNode = new IntListNode();
         //newNode.data = x;
         struct le *item;
         item = (Aptle)malloc(sizeof(tle));
         item->ident1=idente;
         
         item->next = iter;            // iter == oldIter.next
         oldIter->next->ident1 = idente;
      }
      lespera=lista;
}


void FE::addFirst(Ident idente)
{
    Aptle lista = lespera;
    

    lista->first->ident1 = idente;

        if(lista==NULL)
            lista->last->ident1=idente;

    lespera=lista;
}

void FE::addLast(Ident idente)
{
    Aptle lista = lespera;
    

    

    if (lista->last == NULL) // treat case of empty linked list
    {
        lista->last->ident1 = idente;
        lista->first = lista->last;
    }
    else // case of non-empty linked list
    {
        lista->last->next->ident1 = idente;
        lista->last = lista->last->next;
    }
      lista->last->ident1 = idente;
      lista->last->next = NULL;

      lespera=lista;
}

eu já fiz varios testes, e acho que o erro deve-se ao facto de não inicializar os apontadores e a lista a NULL, mas não tenho a certeza e tb não sei como inicializar a NULL

eu axo que posso estruturar meu codigo assim não posso??

Editado por tuga
Link para o comentário
Compartilhar em outros sites

  • 0

ola pessoal;

estou com um problema semelhante a este, tenho que entregar um trabalho desses.

O problema é: compilei esse codigo ae e rodei, mais a busca e a consulta tah dando erro, sera que alguém sabe qual o problema e pode me ajudar???

Obrigado!

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...