linked list can implement both stack and que code example
Example: stack using linked list
#include <bits/stdc++.h>
using namespace std;
template <typename T>
class Node {
public:
T data;
Node<T> *next;
Node(T data) : data(data), next(NULL) {}
};
template <typename T>
class Stack {
Node<T> *head;
int size{0};
public:
Stack() {
head = NULL;
size = 0;
}
int getSize() { return size; }
bool isEmpty() {
if (head == NULL) {
return true;
}
return false;
}
void push(int data) {
Node<T> *temp = new Node<T>(data);
temp->next = head;
head = temp;
size++;
}
void pop() {
if (head == NULL) {
cout << "==============" << endl;
cout << "STACK EMPTY!!!" << endl;
cout << "==============" << endl;
return;
}
Node<T> *temp = head;
head = head->next;
temp->next = NULL;
delete temp;
size--;
}
T top() {
if (head == NULL) {
cout << "==============" << endl;
cout << "STACK EMPTY!!!" << endl;
cout << "==============" << endl;
return 0;
}
return head->data;
}
};
int main() {
Stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
s.push(50);
cout << s.getSize() << endl;
cout << s.top() << endl;
s.pop();
}