Em C, uma lista ligada permite que você crie uma lista sem decidir de antemão quanto tempo pode ser, e sem perder a memória através da atribuição de elementos que ainda não têm . A desvantagem é que você tem que fazer todo o trabalho de organização e gestão da lista na memória. Instruções
Criar a estrutura de Dados
1
Escolha um nome, em seguida, usar typedef para defini-lo. Cada lista ligada vai precisar de uma estrutura , mesmo que só tem uma variável :
typedef struct product_data PRODUCT_DATA ; Página 2 Definir a estrutura . O último elemento deve ser um ponteiro para o tipo que você acabou de definir , e com o nome " next" :
struct {int product_data product_code ; int product_size ; PRODUCT_DATA * next ;} ;
3 Alocar dois ponteiros para esta estrutura de dados , inicializando -los para NULL, para ser a lista de " cabeça" e "cauda" :
PRODUCT_DATA * products_head = NULL; PRODUCT_DATA * products_tail = NULL;
adicionar à lista < br >
4 Alocar uma variável temporária que é um ponteiro para a estrutura de dados : PRODUCT_DATA
* newproduct ;
5 Use malloc () para criar um novo elemento, sempre a verificação de um erro:
if (( newproduct = malloc ( sizeof ( PRODUCT_DATA ))) == NULL ) { abort ( );}
6 preencher os campos do novo elemento. Defina seu campo "next" para NULL :
newproduct -> product_code = NewCode ; newproduct -> product_size = novotamanho ; newproduct -> next = NULL;
7 Defina a variável de cabeça. Se a variável de cabeça é NULL, este é o primeiro elemento adicionado à lista , para definir a variável de cabeça para apontar para ele :
se products_head = newproduct ;
8 Prepare-se para uma diferente ( products_head !) variável. Em outros casos , a cauda variável aponta para o último item da lista , para definir seu próximo valor para apontar para o novo item :
mais products_tail -> next = newproduct ;
9 Atualize a cauda ponto para o novo último elemento , em ambos os casos : products_tail
= newproduct ;
Acesse a Lista
10 Crie outra variável apontando temporária para a estrutura de dados :
PRODUCT_DATA * produto;
11 Defina sua variável temporária para a variável de cabeça : produto
= products_head ;
12 loop através dos elementos , verificando cada um deles e , em seguida, definindo a variável temporária para o próximo ponteiro para atravessar para a próxima:
while ( produto ) {if (produto -> product_code = 15 !) { produto = produto - > next ;}}
13 Verifique se a variável é NULL . Se assim for, você nunca encontrou o item :
se return 0; (produto !) . Caso contrário, ele aponta para o item que estava procurando : retornar product_size produto -> ;
Clean Up Your Work
14 liberar a lista quando o programa termina , como nem todos os sistemas operacionais vai lidar com isso automaticamente
15
loop enquanto a variável de cabeça não é NULL : .
while ( products_head ) {
16 Guarde seu próximo ponteiro na a variável temporariamente cauda :
products_tail = products_head -> next;
17 desalocar o elemento :
livre ( products_head );
18 Coloque o ponteiro cabeça para o ponteiro que você salvou na etapa 4:
products_head = products_tail ;}