simple thing....
just keep one pointer variable that will carry address for previous node and not next one....to find out address of next one just use the formula given below...
e.g
struct NODE
{
int *lleft;
int element;
};
certain cases:
1) in first node left will have the address for last node.To find the address of second node use this formula 'lleft+sizeof(NODE)'.
2) if second node the left pointer variable contains address of first node and address of second node can b find out using same formula given above.
3) to maitain last node is little tough...because left pointer variable will carry address of second from last node...but to find out the address of first variable(as per rule of doubly linked list.last node should have right pointer pointed to first node so that it can traverse in circular way)...the formula can be used is
lleft-(sizeof(NODE)*number of NODE in LIST)
it means u need to keep track of number of node present in doubly linked list