#include #include struct node { int data; node *right; node *left; }; class linklist { private: node *begin; node *end; node *temp; node *leftcur; node *rightcur; node *ptr; node *temp1; public: linklist() { begin = NULL; end = NULL; leftcur = NULL; rightcur = NULL; temp = NULL; ptr = NULL; temp1 = NULL; } void insertnode(int N) { temp = new node; temp -> data = N; temp -> left = NULL; temp -> right = NULL; if(begin==NULL && end==NULL) { begin=temp; end=temp; } else if(begin->right==NULL && end->left==NULL) { leftcur=begin; leftcur-> right=temp; leftcur=leftcur->right; leftcur->left=end; end=leftcur; } if(leftcur != NULL) { while(leftcur->right!=NULL) { leftcur = leftcur->right; } leftcur->right=temp; end = temp; end->left=leftcur; leftcur=leftcur->right; leftcur->right=NULL; } if(leftcur==NULL) {leftcur=temp;} } void deletelast(void) { if(begin==NULL && end==NULL) { cout<<"Linked list empty... can't delete more values "<left==NULL) { temp1=begin; delete temp1; begin=NULL; end=NULL; } else { temp1 = end; end=end->left; end->right=NULL; delete temp1; } } void READ(void) // to see in reverse order..write 'end' inplace of begin { ptr=begin; while(ptr!=NULL) { cout<data<right; // and then write left inplace of right } } }; void main(void) { clrscr(); linklist r; r.insertnode(10); r.insertnode(20); r.insertnode(30); r.insertnode(90); r.deletelast(); r.deletelast(); r.deletelast(); r.deletelast(); r.insertnode(5); r.READ(); getch(); }