Como criar uma lista ligada em c programação

Na programação C, se você quiser adicionar uma segunda estrutura ao código que você já criou, crie uma lista ligada - uma série de estruturas que contêm ponteiros para o outro. Juntamente com os dados de base de uma estrutura, a estrutura contém um ponteiro, o qual contém o endereço da próxima estrutura na lista.

Com alguns malabarismos inteligente de nomes ponteiro, além de um nulo para coroar o final da lista, você pode acabar com algo parecido com o código-fonte em um exemplo lista vinculada primitivo.

Uma EXEMPLO lista encadeada PRIMITIVA

#include #include #include int main () {estoque struct {símbolo char [5] -int quantidade-float estoque preço-struct * próxima -} - Stock struct * primeira struct Estoque * estoque atual-struct * novo - / * Criar estrutura na memória * / first = (estoque struct *) malloc (sizeof (struct estoque)) - se (primeiro == null) {puts ("Algum tipo de malloc () erro") -exit (1) -} / * Atribuir estrutura de dados * / = actual de primeira strcpy (corrente gt; símbolo,"GOOG") -current-gt; quantidade = 100-atual-gt; preço = 801,19-corrente gt; next = NULL-new = (estoque struct *) malloc (sizeof (struct estoque)) - se (nova == null) { puts ("Outra malloc () erro") -exit (1) -} corrente gt; = seguinte nova corrente = (corrente gt novo-strcpy; símbolo,"MSFT") -current-gt; quantidade = 100-atual-gt; price = 28.77-corrente gt; next = NULL - / * banco de dados Mostrar * / puts ("Carteira de Investimentos") -printf ("SymboltSharestPricetValuen") = -current primeira printf ("% -6st% 5DT% 0,2 pés% .2fn", Corrente gt; símbolo, corrente gt; quantidade, corrente gt; preço, de corrente gt; * quantidade de corrente gt; preço) -current = corrente gt;-próxima printf ("% -6st% 5DT% 0,2 pés% .2fn", Atual-gt; símbolo, corrente gt; quantidade, corrente gt; preço, de corrente gt; quantidade * corrente gt; preço) -Retornar (0) -}

Este código-fonte é bastante longo, mas ele simplesmente cria uma segunda estrutura, ligada à primeira. Não deixe que o comprimento do código fonte intimidá-lo.

Linhas 13 a 15 declaram os ponteiros três estrutura padrão que são necessários para uma lista ligada dança. Tradicionalmente, eles são nomeado primeiro, atuais e novos. Eles jogam para o quarto membro na estrutura, em seguida, encontrado na Linha 11, que é um ponteiro estrutura.

Não use typedef para definir uma nova variável de estrutura durante a criação de uma lista ligada. faz um Primitive Linked-List Exemplo não usar typedef, por isso não é um problema com o código, mas muitos programadores C usar typedef com estruturas. Seja cuidadoso!

Video: Tutorial Lista encadeada em C pt-BR

O nome da variável novo, usado na linha 15, é uma palavra reservada em C ++, por isso, se você quer ser bilíngüe, mudar o nome da variável para new_struct ou para algo que não seja a palavra nova.

Quando a primeira estrutura é preenchido, Linha 30 atribui um ponteiro nulo para o elemento seguinte. Esse valor NULL tampa o fim da lista ligada.

Linha 32 cria uma estrutura, colocando o seu endereço na nova variável ponteiro. O endereço é salvo na primeira estrutura na Linha 38. Isso é como a localização da segunda estrutura é mantida.

Linhas 40 a 43 preencher informações para o segundo ponteiro, atribuindo um valor NULL para o próximo elemento na Linha 43.

A ligação ocorre como o conteúdo das estruturas são exibidos. Linha 48 capta endereço da primeira estrutura. Então Linha 54 capta endereço da próxima estrutura a partir da primeira estrutura.

Exercício 1: Digite o código-fonte de um exemplo lista vinculada Primitive em seu editor. Mesmo que seja longa, digite-o porque você vai precisar para editá-lo novamente mais tarde (se você não está acostumado a isso por agora). Construir e executar.

Ao contrário de matrizes, estruturas em uma lista ligada não são numerados. Em vez disso, cada estrutura está ligada à próxima estrutura na lista. Contanto que você sabe o endereço da primeira estrutura, você pode trabalhar através da lista até o fim, que é marcado por um NULL.



A Primitive Exemplo lista ligada mostra algum código fonte desleixado com lotes de código repetido. Quando você vê várias declarações como essa em seu código, você deve pensar imediatamente “funções”.

Uma EXEMPLO lista encadeada MELHOR

#include #include #include #define ITENS 5struct estoque {símbolo char [5] -int quantidade-float estoque preço-struct * próxima -} - Stock struct * primeira struct Estoque * estoque atual-struct * estoque nova-struct * make_structure (void) fill_structure -void (estoque struct * a, int c) show_structure -void (estoque struct * a) -int main () {int x-for (x = 0-xnext = new-current = novo-} fill_structure ( corrente, x + 1) -} corrente gt; próxima = NULL - / * Exibição de base de dados * / (coloca"Carteira de Investimentos") -printf ("SymboltSharestPricetValuen") = -current primeira enquanto (atual) {show_structure (corrente) = -current corrente gt; NEXT-} retorno (0) -} estoque struct * make_structure (void) {struct estoque * AA = (struct estoque *) malloc (sizeof (struct estoque)) - if (a == null) {puts ("Algum tipo de malloc () erro") -exit (1) -} return (a) -} void fill_structure (estoque struct * a, int c) {printf ("Item #% d /% d: n", C, PONTOS) -printf ("Da Symbol: ") -scanf ("% s", Um gt; símbolo) -printf ("Número de ações: ") -scanf ("% d",&um gt; quantidade) -printf ("Compartilhar preços: ") -scanf ("% f",&a-gt; preço) -} show_structure void (estoque struct * a) {printf ("% -6st% 5DT% 0,2 pés% .2fn", A-gt; símbolo, um-gt; quantidade, uma-gt; preço, a-gt; quantidade * a-gt; preço) -}

listas mais vinculados são criados como mostrado em uma melhor Linked-List Exemplo. A chave é a de utilizar três variáveis ​​de estrutura, mostrada em linhas 13 a 15:

Video: C++ - Aula 31 - Lista - Parte 1

  • primeiro sempre contém o endereço da primeira estrutura na lista. Sempre.

  • atual contém o endereço da estrutura que está sendo trabalhado, preenchido com dados, ou exibido.

  • novo é o endereço de uma nova estrutura criada usando a função malloc ().

Linha 7 declara a estrutura de ações como global. Dessa forma, ele pode ser acessado de várias funções.

O loop entre as linhas 25 e 39 cria novas estruturas, ligando-os em conjunto. A estrutura inicial é especial, por isso, seu endereço é guardado na Linha 30. Caso contrário, uma nova estrutura é alocada, graças à função make_structure ().

Na linha 35, a estrutura anterior é updated- o valor atual não é alterado até Linha 36. Antes que isso aconteça, o ponteiro na estrutura atual é atualizada com o endereço da próxima estrutura, nova.

Na linha 40, o fim da lista ligada é marcada por redefinir o novo ponteiro na última estrutura para um NULL.

O loop while na linha 46 exibe todas as estruturas na lista ligada. A condição do circuito é o valor do ponteiro actual. Quando o NULL é encontrado, o loop pára.

O resto do código mostrado em um exemplo lista vinculada Melhor consiste de funções que são bastante auto-explicativo.

exercício 2: Copie o código a partir de um exemplo melhor-lista vinculada no editor. Construir e executar.

Tome nota das declarações scanf () na função fill_structure (). Lembre-se que o -gt; é a notação “Peeker” para um ponteiro. Para obter o endereço, você deve prefixar a variável com um & na função scanf ().


Publicações relacionadas