C Programming

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;

		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;

ęCopyright B Brown. 1984-1999. All rights reserved.