File tree 3 files changed +156
-0
lines changed
computer_science/data_structures/stack
3 files changed +156
-0
lines changed Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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 ( ) ) ;
You can’t perform that action at this time.
0 commit comments