Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Como criar uma lista duplamente ligada em C Programação
Programadores usar listas ligadas linearmente como estruturas de dados atravessáveis ​​. Isto significa que o programador pode começar a partir do início da lista ( chamado a cabeça ) e avançar através da lista um item de cada vez . Este método de armazenamento de dados também permite que o programador adicione eficientemente dados à lista , oferecendo uma alternativa mais versátil para certos outras estruturas de dados , tais como matrizes dinâmicas . Este exemplo mostra como construir uma lista duplamente ligada simples, que permite a navegação da lista em duas direções ( frente e verso ) . Coisas que você precisa
Editor de Texto
/+ Compiler C + C ou IDE (como o Microsoft Visual Studio)
Show Mais instruções
1

Crie a estrutura de nó que irá servir como o tipo de dados da lista encadeada . No editor de texto , digite o seguinte código: # include


int main {

struct ListNode {

int dados ;

suporte ListNode * prev ;

escorar ListNode * próximo ;

};

return 0; }


o " struct ListNode " bloco de código cria um modelo para os itens que irão preencher a lista . Este modelo define um ListNode como contendo três elementos: um item de dados (um inteiro ) e ponteiros para os itens anteriores e os próximos da lista. Um ponteiro é uma variável que contém um endereço de memória . Os ponteiros são usados ​​para se referir a outras estruturas de dados na memória profunda e alocar dinamicamente a memória durante a execução do código.
2

Declare as variáveis ​​que organizarão a estrutura da lista . Insira este código de exemplo para o arquivo de texto :

int size;

ListNode * cabeça ;

ListNode * cauda;

cauda = cabeça ; < br >

cabeça = cauda;

Estes dois ponteiros são o início eo fim da lista , respectivamente. Usando esses ponteiros , o programador sabe onde o início da lista é e onde o fim é , simplesmente , verificando se o nó atual é a "cabeça" ou ponteiro "cauda" . Ambos referem-se volta para o outro , no caso de uma lista vazia.
3

Criar um algoritmo simples para acrescentar itens da lista ligada . Siga este exemplo de código:

append void ( int num) {

struct ListNode * tracer = cabeça ;

struct ListNode * newNode = (struct ListNode *) malloc ( sizeof ( ListNode struct) );

newNode -> data = num ;

if ( cabeça == null) {

cabeça = newNode ;

cauda = newNode ;

newNode -> prev = cabeça ;

newNode -> next = cauda;

}

else {

while ( tracer -> next = cauda !)

{ tracer = tracer -> next; }

newNode -> prev = traçador ;

newNode -> next = cauda;

tracer -> next = nó ;

cauda = nó ;

}

tamanho + +;

}

Este código adiciona um nó ao final da lista . Ela começa com a criação de um ponteiro para a cabeça da lista ( " tracer " ) . Em seguida , ele cria um ponteiro para um bloco de memória alocada dinamicamente reservado para um ListNode recém-criado ( newNode ) e define os dados desse nó para o número inteiro "num" . Se a cabeça aponta para NULL ( ou seja, a lista está vazia , porque os pontos principais a nada ) , então , o código insere o nó no início da lista . Caso contrário, o " enquanto " ciclos de percorrer os nós da lista até chegar ao último nó . Quando " tracer " aponta para o último elemento da lista , o código insere o nó. O comando final contribui para o "tamanho" inteiro , mantendo o controle dos elementos na lista
4

Criar um algoritmo para remover e item no final da lista: .

removeNode void ( ) {

if ( cauda = cabeça! ) {

struct ListNode * end = cauda;

cauda = tail- > prev ;

livre ( final );
tamanho

- ;

}

}

Este código cria um ponteiro ( "end" ) para o último elemento da lista (o mesmo elemento da "cauda" aponta para ) . Em seguida , a cauda está definido para apontar para o elemento imediatamente antes do último elemento (o nó apontado pelo " prev " ponteiro do último elemento ) . Finalmente, a memória usada por último nó , conhecido por "end" , é liberado para uso posterior.

Anterior :

Próximo : No
  Os artigos relacionados
·Como alocar um ponteiro matriz 2D 
·Como projetar o Editor Usando OpenGL 
·Como exibir uma vírgula em C + + 
·Como alterar cores em C + + 
·Como definir o CurrentRow DataGridView 
·Como escrever um programa Visual C que usa uma instruç…
·Como verificar se uma matriz tem valor ou não em C + +…
·Como passar variáveis ​​do bloco comum a C 
·Como executar C + + arquivos no bloco de notas 
·Como fazer um arquivo GNU para C + + 
  Artigos em destaque
·Projetos ASP.NET e Codificação em C 
·Como ler uma linha de um arquivo aleatório em CSH 
·Como obter gráficos em C + + 
·C + + Tipos de Dados 
·Como representar uma tabulação em uma String no CPP 
·Como acessar podcasts de vídeo com o iPhone SDK 
·O que é a sintaxe estrutural ou Estrutura de Programaç…
·GNU & C + + para computadores 
·Como calcular o tempo em C em Linux 
·Função recursiva em C 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados