-
Notifications
You must be signed in to change notification settings - Fork 0
/
27_stack_peek_arrays.c
123 lines (104 loc) · 2.63 KB
/
27_stack_peek_arrays.c
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
#include<stdio.h>
#include<stdlib.h>
struct stack{
int size;
int top;
int *arr;
};
int isEmpty(struct stack* ptr){
if (ptr->top ==-1){
return 1;
}
// no need for returning 0 from a else statement as
// a int function by default return 0
else {return 0;}
}
int isFull(struct stack *ptr){
printf("%d and %d \n",ptr->top,ptr->size);
if (ptr->top == (ptr->size)-1){
return 1;
}
else
return 0;
// no need for returning 0 from a else statement as
// a int function by default return 0
}
// function to push an element is the stack
void pushinstack(struct stack* sp,int value){
if (isFull(sp)){
printf("the stack overflowed");
}
else{
sp->top++;
sp->arr[sp->top] = value;
}
}
int popfromstack(struct stack *s){
int val = 0;
if (isEmpty(s)){
printf("the stack is empty");
return -1;
}
else {
val = s->arr[s->top];
// free(s->arr[s->top]);
s->top--;
return val;
}
}
//peek function declaration
int peek(struct stack* sp, int i){
int tp = sp->top;
if ((tp-i+1)<0){
printf("Invalid pos entered \n");
return -1;
}
else
{return sp->arr[tp-i+1];}
}
int main(){
struct stack *sp;
int value = 320;
sp = (struct stack*)malloc(sizeof(struct stack));
sp->size= 8;
sp->top = -1;
sp->arr = (int *)malloc(sizeof(int)*sp->size);
//following line of code are for checking if the array is empty or not
if(isEmpty(sp)){
printf("the array is empty \n");
}
else {
printf("the array is not empty\n");
}
//checking ends
//pushing an element
pushinstack(sp,value); // pushing an element into the stack
pushinstack(sp,65); // pushing an element into the stack
pushinstack(sp,96); // pushing an element into the stack
pushinstack(sp,87); // pushing an element into the stack
//following line of code are for checking if the array is empty or not
int x;
x = isEmpty(sp);
printf("the value of x is %d\n",x);
if(isEmpty(sp)){
printf("the array is empty \n");
}
else {
printf("the array is not empty\n");
}
//checking ends
//poping an element
int t=popfromstack(sp);
printf("the value poped is %d\n",t);
//following line of code are for checking if the array is empty or not
if(isEmpty(sp)){
printf("the array is empty \n");
}
else {
printf("the array is not empty\n");
}
//checking ends
//peek function calling
printf("the value peaked is for pos %d is %d \n",3,peek(sp,3));
return 0;
}