// CS301P Lab 2 Problem KST Learning #include #include using namespace std; class Stack_Array { private: int array[5]; int top = -1; public: void push(int d) { if(top >= 5) { cout << "\n\n*** Stack is Full ***"; } else { array[++top] = d; } } void pop() { if(top == -1) { cout << "\n\n*** Stack is Empty ***"; } else { cout << "\n\nStack With Array Elements : "; for(int i=top; i >= 0; i--) { cout << array[i] << " "; } } } }; class Node { private: int data; Node *nextAdd; public: void setData(int d) { data = d; } void setNext(Node *ptr) { nextAdd = ptr; } int getData() { return data; } Node* getNext() { return nextAdd; } }; class Stack_LinkedList { private: Node *Head; public: Stack_LinkedList() { Head = NULL; } void push(int d) { Node *newNode = new Node; newNode -> setData(d); newNode -> setNext(NULL); if(Head == NULL) { Head = newNode; } else { newNode -> setNext(Head); Head = newNode; } } void pop() { if(Head == NULL) { cout << "\n\n*** Stack is Empty ***"; } else { Node *ptr = Head; cout << "\n\nStack With Linked List Elements : "; while(ptr != NULL) { cout << ptr -> getData() << " "; ptr = ptr -> getNext(); } } } }; main() { Stack_Array sa; Stack_LinkedList sl; int d; int choice; while(1) { cout << "\n\n1. Push Stack Elements Using Array"; cout << "\n2. Push Stack Elements Using Linked List"; cout << "\n3. Pop Stack Elements Using Array"; cout << "\n4. Pop Stack Elements Using Linked List"; cout << "\n5. Exit Program"; cout << "\n\nEnter Your Choice : "; cin >> choice; switch(choice) { case 1: for(int i=1; i<=5; i++) { cout << "\n\nEnter Element : "; cin >> d; sa.push(d); } break; case 2: cout << "\n\n How many Nodes You Want To Push : "; cin >> choice; for(int i=1; i<=choice; i++) { cout << "\n\nEnter Element : "; cin >> d; sl.push(d); } break; case 3: sa.pop(); break; case 4: sl.pop(); break; case 5: exit(0); default: cout << "\n\n*** Invalid Choice ***"; } } }