About Lesson
It is illegal for a structure to contain an instance of itself, but it can have a pointer to itself. Let’s look at the following structure for the node of a Linked List.
struct lnode {
int value; /* value of the node */
struct lnode *next; /* pointer to the next node */
);
Let’s look at following functions that use this struct:
/* Add a node to the end of linked list.
*/
struct lnode *add_last(struct lnode *head, int val)
{
struct lnode *ptr;
struct lnode *node = (struct lnode *) malloc(sizeof(struct lnode));
node->value = val;
node->next = NULL;
if (!head)
return node;
ptr = head;
while (ptr->next)
ptr = ptr->next;
ptr->next = node;
return head;
}
/* Remove the first node from a linked list.
*/
struct lnode *remove_first(struct lnode *head)
{
if (!head)
return NULL;
struct lnode *ptr = head->next;
free(head);
return ptr;
}
/* Display the values in the linked list.
*/
void display(struct lnode *head)
{
while (head) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
/* Free up all the nodes in the linked list.
*/
void cleanup(struct lnode *head)
{
while (head) {
head = remove_first(head);
}
}