LINKED LISTS
A linked list is a complex data structure, especially useful in
systems or applications programming. A linked list is comprised
of a series of nodes, each node containing a data element, and a pointer to the next node, eg,
-------- -------- | data | --->| data | |--------| | |--------| | pointer|---- | pointer| ---> NULL -------- --------
A structure which contains a data element and a pointer to the next node is created by,
struct list {
int value;
struct list *next;
};
This defines a new data structure called list (actually the definition of a node), which contains two members. The first is an integer called value. The second is called next, which is a pointer to another list structure (or node). Suppose that we declare two structures to be of the same type as list, eg,
struct list n1, n2;
The next pointer of structure n1 may be set to point to the n2 structure by
/* assign address of first element in n2 to the pointer next of the n1 structure */ n1.next = &n2;
which creates a link between the two structures.
/* LLIST.C Program to illustrate linked lists */
#include <stdio.h>
struct list {
int value;
struct list *next;
};
main()
{
struct list n1, n2, n3;
int i;
n1.value = 100;
n2.value = 200;
n3.value = 300;
n1.next = &n2;
n2.next = &n3;
i = n1.next->value;
printf("%d\n", n2.next->value);
}
Not only this, but consider the following
n1.next = n2.next /* deletes n2 */ n2_3.next = n2.next; /* adds struct n2_3 */ n2.next = &n2_3;
In using linked list structures, it is common to assign the value of 0 to the last pointer in the list, to indicate that there are no more nodes in the list, eg,
n3.next = 0;