#include #include class NODE { public: int data; NODE *previous; NODE *next; NODE(int data) { this->data=data; previous=NULL; next=NULL; } }; class dlinkedlist { NODE *first; NODE *back; public: dlinkedlist() { first=NULL; back=NULL; } ~dlinkedlist() { removeallnodes(); } void addnode(int data) { NODE *n = new NODE(data); if (back==NULL) { back=n; first=n; } else { back->next=n; n->previous=back; back=n; } } void displaynodes() { printf("NODE : "); NODE *temp=first; while(temp!=NULL) { printf("%d ",temp->data); temp=temp->next; } printf("\n"); } void displaynodereverse() { printf("NODE : "); NODE *temp=back; while(temp!=NULL) { printf("%d ",temp->data); temp=temp->previous; } printf("\n"); } void removeallnodes() { NODE *temp=back; while(temp!=NULL) { NODE *n=temp; temp=temp->previous; delete n; } back=NULL; first=NULL; } }; void main() { dlinkedlist dlist; dlist.addnode(100); dlist.addnode(5); dlist.addnode(33); dlist.addnode(23); dlist.addnode(56); dlist.addnode(78); dlist.addnode(54); dlist.addnode(13); dlist.addnode(43); dlist.displaynodes(); dlist.displaynodereverse(); }