//Syed Rais Ahmad //Assignment # 5 Quest 1 //empty,push,pop and popandtest using dynamic storage. #include //A node in Link List. class llistItem { public: int item; llistItem * nxtItem; }; //Link List class Stack { private: llistItem * head; public: Stack(); ~Stack() {delete head;}; bool push(int); int popNTest(); int pop(); bool Empty(); }; //create head and put NULL values in it. Stack::Stack() { head = new llistItem; head->nxtItem=NULL; head->item=NULL; } //Pops an item is on stack Top. int Stack::pop() { int i=0; llistItem * ptr=head->nxtItem->nxtItem; i=head->nxtItem->item; delete head->nxtItem; head->nxtItem=ptr; return i; } //Return an item is on stack Top. -1 if stack is empty int Stack::popNTest() { if (head->nxtItem) { int i=0; llistItem * ptr=head->nxtItem->nxtItem; i=head->nxtItem->item; delete head->nxtItem; head->nxtItem=ptr; return i; } return -1; } //push an int on stack bool Stack::push(int insInt) { llistItem * ptr=head, * temp; temp=ptr->nxtItem; ptr->nxtItem=new llistItem; ptr->nxtItem->item=insInt; ptr->nxtItem->nxtItem=temp; return true; } //is Stack Empty bool Stack::Empty() { return (head->nxtItem)? false : true; } //------- Program's main flow starts --------------------------- main() { Stack l; int i=0; l.push(2); l.push(11); cout << "\nPushed 2, 11. Pop Returns: " << l.pop(); cout << "\nEmpty() returns: " << l.Empty(); cout << "\nSecond Pop returns: " << l.pop(); cout << "\nEmpty() returns: " << l.Empty(); cout << "\npopandTest() returns :" << l.popNTest() << '\n'; return 0; }