Skip to content

Commit a0454ae

Browse files
committed
add stack js implementation
1 parent 99b3ae5 commit a0454ae

File tree

3 files changed

+156
-0
lines changed

3 files changed

+156
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const push = (stack, item) => [item, ...stack];
2+
3+
const pop = (stack) => stack.slice(1);
4+
5+
const top = (stack) => stack[0];
6+
7+
const isEmpty = (stack) => size(stack) === 0;
8+
9+
const size = (stack) => stack.length;
10+
11+
// testing
12+
let stack = [];
13+
14+
console.log(isEmpty(stack));
15+
16+
stack = push(stack, 1);
17+
console.log(stack);
18+
stack = push(stack, 2);
19+
console.log(stack);
20+
stack = push(stack, 3);
21+
console.log(stack);
22+
stack = push(stack, 4);
23+
console.log(stack);
24+
stack = push(stack, 5);
25+
console.log(stack);
26+
27+
console.log(top(stack));
28+
console.log(size(stack));
29+
console.log(isEmpty(stack));
30+
31+
stack = pop(stack);
32+
stack = pop(stack);
33+
stack = pop(stack);
34+
stack = pop(stack);
35+
36+
console.log(isEmpty(stack));
37+
console.log(top(stack));
38+
stack = pop(stack);
39+
console.log(isEmpty(stack));
40+
console.log(size(stack));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
class Stack {
2+
constructor() {
3+
this.items = [];
4+
}
5+
6+
push(item) {
7+
this.items = [item, ...this.items];
8+
}
9+
10+
pop() {
11+
this.items = this.items.slice(1);
12+
}
13+
14+
top() {
15+
return this.items[0];
16+
}
17+
18+
isEmpty() {
19+
return this.size() === 0;
20+
}
21+
22+
size() {
23+
return this.items.length;
24+
}
25+
}
26+
27+
// testing
28+
const stack = new Stack();
29+
30+
console.log(stack.isEmpty());
31+
32+
stack.push(1);
33+
console.log(stack.items);
34+
stack.push(2);
35+
console.log(stack.items);
36+
stack.push(3);
37+
console.log(stack.items);
38+
stack.push(4);
39+
console.log(stack.items);
40+
stack.push(5);
41+
console.log(stack.items);
42+
43+
console.log(stack.isEmpty());
44+
console.log(stack.top());
45+
46+
stack.pop();
47+
console.log(stack.items);
48+
stack.pop();
49+
console.log(stack.items);
50+
stack.pop();
51+
console.log(stack.items);
52+
stack.pop();
53+
console.log(stack.items);
54+
55+
console.log(stack.isEmpty());
56+
57+
stack.pop();
58+
console.log(stack.items);
59+
60+
console.log(stack.isEmpty());
61+
console.log(stack.top());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
const createStack = () => {
2+
let items = [];
3+
4+
const push = (item) => items = [item, ...items];
5+
const pop = () => items = items.slice(1);
6+
const top = () => items[0];
7+
const isEmpty = () => size() === 0;
8+
const size = () => items.length;
9+
const getItems = () => items;
10+
11+
return {
12+
push,
13+
pop,
14+
top,
15+
isEmpty,
16+
size,
17+
getItems
18+
};
19+
};
20+
21+
// testing
22+
const stack = createStack();
23+
24+
console.log(stack.isEmpty());
25+
26+
stack.push(1);
27+
console.log(stack.getItems());
28+
stack.push(2);
29+
console.log(stack.getItems());
30+
stack.push(3);
31+
console.log(stack.getItems());
32+
stack.push(4);
33+
console.log(stack.getItems());
34+
stack.push(5);
35+
console.log(stack.getItems());
36+
37+
console.log(stack.top());
38+
console.log(stack.size());
39+
console.log(stack.isEmpty());
40+
41+
stack.pop();
42+
console.log(stack.getItems());
43+
stack.pop();
44+
console.log(stack.getItems());
45+
stack.pop();
46+
console.log(stack.getItems());
47+
stack.pop();
48+
console.log(stack.getItems());
49+
50+
console.log(stack.isEmpty());
51+
console.log(stack.top());
52+
stack.pop();
53+
console.log(stack.getItems());
54+
console.log(stack.isEmpty());
55+
console.log(stack.size());

0 commit comments

Comments
 (0)