#include <stdio.h>
#include <stdlib.h>
struct int_linked_list
{
int n;
struct int_linked_list *next;
struct int_linked_list *prev;
};
typedef struct int_linked_list item;
int main(void)
{
item *curr, *head, *tail;
int i = 1;
head = curr = (item *)malloc(sizeof(item));
curr->n = i;
curr->prev = NULL;
for (i = 2; i <= 10; i++)
{
curr->next = (item *)malloc(sizeof(item));
curr->next->n = i;
curr->next->prev = curr;
curr = curr->next;
}
curr->next = NULL;
tail = curr;
printf("Print with next (left to right):\n");
curr = head;
while (curr)
{
printf("%d ", curr->n);
curr = curr->next;
}
printf("\n\nPrint with prev (right to left):\n");
curr = tail;
while (curr)
{
printf("%d ", curr->n);
curr = curr->prev;
}
// free the linked list
curr = head;
while (curr)
{
curr = curr->next;
free(head);
head = curr;
}
return 0;
}
/*
run:
Print with next (left to right):
1 2 3 4 5 6 7 8 9 10
Print with prev (right to left):
10 9 8 7 6 5 4 3 2 1
*/