-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstack_using_array.cpp
139 lines (119 loc) · 1.91 KB
/
stack_using_array.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <iostream>
using namespace std;
// structuring the stack containing size, top, array=s.
struct stack
{
int size;
int top;
int *s;
};
// Initializing stack.
void create(struct stack *st)
{
cout << "Enter size of stack : ";
cin >> st->size;
st->s = new int[st->size];
st->top = -1;
}
//Function for displaying stack.
void display(struct stack st)
{
for (int i = st.top; i >= 0; i--)
{
cout << st.s[i] << " ";
}
cout << endl;
}
// Pushing element in stack.
void push(stack *st, int x)
{
if (st->top == st->size - 1)
{
cout << "stack overflow";
}
else
{
st->top++;
st->s[st->top] = x;
}
}
// Popping or Deleting element from stack.
int pop(stack *st)
{
int x = -1;
if (st->top == -1)
{
cout << "stack underflow";
}
else
{
x = st->s[st->top];
st->top--;
}
return x;
}
// Peeking element in a stack.
int peek(stack st, int pos)
{
int x = -1;
if ((st.top -pos + 1) < 0)
{
cout << "Invalid Position.";
}
else
{
x = st.s[st.top - pos + 1];
}
return x;
}
// stackTop is used to see the current top element.
int stackTop(stack st)
{
if (st.top == -1)
{
return -1;
}
else
{
return st.s[st.top];
}
}
// isEmpty is used to check whether the stack is empty or not.
int isEmpty(stack st)
{
if (st.top == -1)
{
return 1;
}
else
{
return 0;
}
}
// isFull is used to check whether the stack is full or not.
int isFull(stack st)
{
if (st.top == st.size - 1)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
struct stack st;
int x;
create(&st);
for (int i = 0; i < st.size; i++)
{
cin >> x;
push(&st, x);
}
cout << pop(&st);
cout << endl;
display(st);
return 0;
}