Como criar uma lista dinamica ?!

13/11/2004

3

é qeu gostaria de fazer uma lista dinamica com inicio final, prox a nterior mas já aprendi q o c tem um componente tlist q faz tudo isso, valeu pela atenção!!!!


:arrow: [color=red:a60fd0de61]Título alterado pelo Moderador oTTo. Removido: ´Lista´.[/color:a60fd0de61]
:idea: [color=blue:a60fd0de61]Seja mais claro no título.[/color:a60fd0de61]
:idea: [color=blue:a60fd0de61][url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=16976]Saiba como obter resposta rápida..[/url][/color:a60fd0de61]
:idea: [color=blue:a60fd0de61]Leia sempre [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta.[/url][/color:a60fd0de61]
:idea: [color=blue:a60fd0de61]Use sempre o Link [url=http://delphiforum.icft.com.br/forum/search.php][img:a60fd0de61]http://delphiforum.icft.com.br/forum/templates/subSilver/images/icon_mini_search.gif[/img:a60fd0de61] Pesquisar[/url] no topo da Página.[/color:a60fd0de61]


Responder

Posts

Blz.... Mais depois tenta ai....

 typedef struct no {
                             int info;
                            struct no *prox;
                            struct no *ant;
                           }noLista;

 typedef struct cabeca {
                        noLista inicio;
                        noLista fim;
                        }descritor;

 //aloca o inicio da lista.
 descritor *iniLista = (descritor *) malloc(sizeof(descritor));

 void isereLista(int elem, descritor *minhaLista)
{
   noLista *ant = NULL, *suc;
   //aloca um novo endereço para a informação
   noLista *novo = (noLista *) malloc(sizeof(noLista)); 
      if(novo != NULL) {
          novo->prox = NULL;
          novo->ant = NULL;
          novo->info = elem;
          if(minhaLista->inicio == NULL){// testa se a lista está vazia
                 minhaLista->inicio = novo;
                 minhaLista->fim = novo;
          }else {
             suc = minhaLista->inicio;
              //procura o local de inserção
             while((suc != NULL) && (suc->info < elem)) {
                  ant = suc;
                  suc -> suc->prox;
             }
             if(ant == NULL){   //insere no inicio da lista
                   novo->prox = minhaLista->inicio;
                   minhaLista->inicio->ant = novo;
                   minhaLista->inicio = novo; // atualiza o inicio da lista
             }
             else 
              if((suc != NULL) && (suc->info > elem)){ //insere no meio
                   novo->prox = ant->prox;
                   novo->ant = ant;
                   suc->ant = novo;
                   ant->prox = novo;
              }
              else
              if(suc == NULL){                           //insere no final
                   novo->ant = minhaLista->fim;
                   minhaLista->fim->prox = novo;
                   minhaLista->fim = novo; //atualiza o final da lista.
              }
                
          }
      }     
        
}

  //(...)

  insereLista(36, iniLista); //depois é só chamar.


não sei se tem algum erro, escrevi agora.
Depois testa ai... é sempre bom a a gente saber como isso funciona... vai que vc ñ pode usar o BCB.... eu sempre faço assim
Qualquer coisa é só postar!


Responder