این مثال رو در نظر بگیرین:
LLIST *list_add(LLIST **p, int i)
{
if (p == NULL) /*checks to see if the pointer points somewhere in space*/
return NULL;
LLIST *n = malloc(sizeof(LLIST)); /* creates a new node of the correct data size */
if (n == NULL)
return NULL;
n->next = *p; /* the previous element (*p) now becomes the "next" element */
*p = n; /* add new empty element to the front (head) of the list */
n->data = i;
return *p;
}
که عناصر رو به ابتدای لیست اضافه میکنه.
و برای چاپ از تابعی استفاده میکنید که به صورت بازگشتی عناصر رو چاپ میکنه:
void list_print_reverse(LLIST *n)
{
if (n == NULL)
{
printf("list is empty\n");
return;
}
if (n->next != NULL)
{
list_print_reverse(n->next);
}
printf("print %p %p %d\n", n, n->next, n->data);
}