-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathStackUsingLL.cpp
78 lines (64 loc) · 1.05 KB
/
StackUsingLL.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
using namespace std;
template <typename T>
class Node {
public :
T data;
Node<T> *next;
Node(T val){
data = val;
next = NULL;
}
};
template <typename T>
class StackUsingLL {
Node<T> *head;
int size;
public :
StackUsingLL(){
head = NULL;
size = 0;
}
int getSize(){
return size;
}
bool isEmpty(){
return size==0;
}
void push(T val){
Node<T> *newNode = new Node<T>(val);
newNode->next = head;
head = newNode;
size++;
}
T pop(){
if (head == NULL){
return 0;
}
T ans = head->data;
Node<T> *temp = head;
head = head->next;
delete temp;
size--;
return ans;
}
T top(){
if (head == NULL){
return 0;
}
return head->data;
}
};
int main(){
StackUsingLL<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
s.push(50);
cout<<"Top element :"<<s.top()<<endl;
cout<<"Popped element :"<<s.pop()<<endl;
cout<<"Popped element :"<<s.pop()<<endl;
cout<<"Empty or not :"<<s.isEmpty()<<endl;
cout<<"Size :"<<s.getSize()<<endl;
}