-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstack.c
More file actions
72 lines (64 loc) · 1.37 KB
/
Copy pathstack.c
File metadata and controls
72 lines (64 loc) · 1.37 KB
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
#include <stdio.h>
#include <stdlib.h>
typedef struct Stack{
int* array;
int head;
int length;
}Stack;
Stack createStack(int length);
void push(Stack* stack, int x);
int pop(Stack* stack);
int top(Stack stack);
void traverse(Stack stack);
int main(){
int length;
printf("please input the lentgh of the stack:");
scanf("%ld",&length);
Stack stack = createStack(length);
push(&stack,5);
traverse(stack);
push(&stack,10);
traverse(stack);
push(&stack,15);
traverse(stack);
push(&stack,3);
traverse(stack);
printf("%ld\n",pop(&stack));
traverse(stack);
printf("%ld\n", top(stack));
traverse(stack);
}
Stack createStack(int length){
Stack stack;
stack.array = (int*)malloc(sizeof(int)*length);
stack.head = 0;
stack.length = length;
return stack;
}
void push(Stack* stack, int x){
if(stack->head >= stack->length){
printf("The stack is full, you cannot push any element into it!\n");
}else{
stack->array[stack->head++] = x;
}
}
int pop(Stack* stack){
int result = -1;
if(stack->head==0){
printf("The stack is empty, you cannot pop any element from it!\n");
}else{
result = stack->array[stack->head-1];
stack->head--;
}
return result;
}
int top(Stack stack){
return stack.array[stack.head-1];
}
void traverse(Stack stack){
int i;
for(i=0;i<stack.head;i++){
printf("%ld ", stack.array[i]);
}
printf("\n");
}