#include 
#include 
#include "DoublyLinkedList.h"

/*
 * Tests all functions of DoublyLinkedList
 */
int main()
{
	DoublyLinkedList* dll = (DoublyLinkedList*)malloc(sizeof(DoublyLinkedList));
	DoublyLinkedList_initialize(dll, (E)1);
	int i = 2;
	while(i <= 11)
	{
		DoublyLinkedList_addEntry(dll, (E)i);
		i++;
	}
	DoublyLinkedList_removeEntry(dll);
	DLLNode tmpnode = DoublyLinkedList_getTail(dll);
	DoublyLinkedList_setData(dll, &tmpnode, (E)5);
	DLLNode ptr = DoublyLinkedList_getHead(dll);
	E tmp = -1;
	/*
	 * Forward loop demo
	 */
	for(i = 0; i < DoublyLinkedList_getElements(dll); i++)
	{
		if(DoublyLinkedList_getData(ptr) == tmp)
		{
			printf("Null Pointer Exception\n");
			break;
		}
		tmp = DoublyLinkedList_getData(ptr);
		printf("%d\n", (int)DoublyLinkedList_getData(ptr));
		ptr = DoublyLinkedList_getNext(ptr);

	}
	if(ptr.next != NULL || !DoublyLinkedList_equals(DoublyLinkedList_getTail(dll), ptr))
		printf("Premature loop termination.\n");
	printf("\n");
	tmp = -1;
	ptr = DoublyLinkedList_getTail(dll);
	/*
	 * Backward loop demo
	 */
	for(i = 0; i < DoublyLinkedList_getElements(dll); i++)
	{
		if(DoublyLinkedList_getData(ptr) == tmp)
		{
			printf("Null Pointer Exception\n");
			break;
		}
		tmp = DoublyLinkedList_getData(ptr);
		printf("%d\n", (int)DoublyLinkedList_getData(ptr));
		ptr = DoublyLinkedList_getPrev(ptr);

	}
	if(ptr.prev != NULL || !DoublyLinkedList_equals(DoublyLinkedList_getHead(dll), ptr))
		printf("Premature loop termination.\n");
	printf("\n");
	printf("Head value: %d\n", (int)DoublyLinkedList_getData(DoublyLinkedList_getHead(dll)));
	printf("Tail value: %d\n", (int)DoublyLinkedList_getData(DoublyLinkedList_getTail(dll)));
	printf("No. of Elements: %d\n", DoublyLinkedList_getElements(dll));
	printf("Press ENTER to continue");
	gets((char*)&tmp);
	return 0;
}

    Source: geocities.com/yamzta333/DLL

               ( geocities.com/yamzta333)