|
Notice that the chain is contructed using references (i.e., addresses)
|
|
| A link is created by including an reference variable in the object itself |
This is the class definition:
class ListElem
{
public:
int value; // Integer
ListElem *next; // Pointer used to make link
};
|
ListElem obj1;
ListElem obj2;
obj1.value = 1000;
obj2.value = 5000;
|
In addition, the elements' value field have been initialized.
obj1.next = &obj2;
|
obj2.next = NULL; // = 0, it means "end"
|
This is what is going on inside the computer when you make a linked list:
|
Although the linked list is created, we (as the programmer) need information about the linked list to use it
|
(ListElem *)
|
(ListElem *) head;
head = &obj1; // Remember the start of the list
|
|
head = NULL;
|
| visiting every element in the list |
While visiting the elements of the list, you can perform operation(s) on the elements.
E.g.: sum all the values stored in the list elements
|
This is a "natural" consequence from the fact that the information necessary to access the ith element of the list (which is the location (address)) is stored in the i-1th element....
Starting from the first element of the list, we find the location (through the pointer variable) of the next element; and so on.
ListElem *head; // Assume: head points to the first ListElem...
ListElem *p; // Auxiliary pointer variable to traverse list
p = head; // Very important: start at first element
while ( p != NULL )
{
cout << p->value; // Access value stored in list element
p = p->next; // Visit next element in list
}
|
|
We will discuss these next...