// Stack1.cpp: implementation of the Stack class. // ////////////////////////////////////////////////////////////////////// #include "Stack.h" #include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Stack::Stack() { } Stack::~Stack() { } Stack::set(Node *p_Node1) { // Set the top value to the stack. Top=p_Node1; } Stack::set() { Top=NULL; } Stack::push(Node *p_Node1) { // Insert a card on the top of the stack. p_Node1->next=Top; Top=p_Node1; } Stack::insert(int k, Node *p_node) { // Insert a card after k cards in the stack. if(k==0) { p_node->next=Top; Top=p_node; } else { // ---------------------------------- int number_of_elements=0; Node *topTemp, *topPrevious; int x; // if(p_node!=NULL) { topTemp=Top; while(topTemp!=NULL) { number_of_elements++; topPrevious=topTemp; topTemp=topTemp->next; if(k==number_of_elements) { topPrevious->next=p_node; p_node->next=topTemp; break; } } x=17; } } } Stack::concatenation(Node *p_node) { // Insert a stack on the top of another stack. // int number_of_elements=0; Node *topTemp, *topPrevious; int x; // if(p_node!=NULL) { topTemp=p_node; while(topTemp!=NULL) { number_of_elements++; topPrevious=topTemp; topTemp=topTemp->next; } x=17; } // ------------------------------------------- //p_Node1->next=Top; topPrevious->next=Top; Top=p_node; } Node* Stack::pop() { // delete a card from the top of the stack. Node *p_Node1; p_Node1=Top; Top=Top->next; return p_Node1; } Stack::show() { if(Top!=NULL) { cout << "The Stack: ==============" << endl; Node * topTemp; topTemp=Top; while(topTemp!=NULL) { topTemp->show(); topTemp=topTemp->next; } } else { cout << "Empty Stack ==============" << endl; } } Stack::reverse() { if(Top!=NULL) { // cout << "The Stack: ==============" << endl; Node * topTemp; topTemp=Top; while(topTemp!=NULL) { //topTemp->show(); topTemp->side=1-topTemp->side; topTemp=topTemp->next; } } else { cout << "Empty Stack ==============" << endl; } } int Stack::count() { int number_of_elements; number_of_elements=0; if(Top!=NULL) { Node *topTemp; topTemp=Top; while(topTemp!=NULL) { number_of_elements++; topTemp=topTemp->next; } } return number_of_elements; } Node* Stack::bottomCard() { int iside; Node *p_Node_last; int number_of_elements; number_of_elements=0; if(Top!=NULL) { Node *topTemp; topTemp=Top; p_Node_last=topTemp; while(topTemp!=NULL) { number_of_elements++; p_Node_last=topTemp; topTemp=topTemp->next; } } iside=p_Node_last->side; if(iside==0) { cout << "The Last card is Face Down ==============" << endl; return NULL; } return p_Node_last; } // ========================================= Stack::remove(int k) { // Removes the k'th card: k=0,1,2 int i=0; if(Top!=NULL) { // cout << "The Stack: ==============" << endl; Node * topCurrent; Node * topNext; Node * topNew; topNew=Top; topCurrent=Top; topNext=Top; topNext=topNext->next; topCurrent->next=topNext; while(topCurrent!=NULL) { i++; //topTemp->show(); if(i==k) { topNext=topNext->next; } topCurrent->next=topNext; if(topNext!=NULL) { topNext=topNext->next; } topCurrent=topCurrent->next; } } else { cout << "Empty Stack ==============" << endl; } }