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.