Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3a10f9f

Browse files
Implemented array-based Stack (Closes #3)
Implemented array style Stack. Added getLength() method to Stack data structures.
1 parent af019f0 commit 3a10f9f

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

‎Data-Structures/Sequential/Stack.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
export default class Stack<T> {
2+
private length: number;
3+
private values: Array<T>;
4+
5+
constructor() {
6+
this.length = 0;
7+
this.values = new Array<T>();
8+
}
9+
10+
public getLength(): number {
11+
return this.length;
12+
}
13+
14+
public peek(): T | null {
15+
return this.values[this.length-1] || null;
16+
}
17+
18+
public push(value: T): boolean {
19+
this.values[this.length] = value;
20+
++this.length;
21+
return true;
22+
}
23+
24+
public pop() {
25+
const value = this.values[this.length-1];
26+
delete this.values[this.length-1];
27+
--this.length;
28+
return value;
29+
}
30+
}
31+
32+
function printStack(stack: Stack<any>) {
33+
console.log(JSON.stringify(stack));
34+
}
35+
36+
function printPopStack(stack: Stack<any>) {
37+
console.log('Popped:', stack.pop());
38+
}
39+
40+
function printPeekStack(stack: Stack<any>) {
41+
console.log('Peeking... Found', stack.peek());
42+
}
43+
44+
//---------------------------------------------------------------------
45+
// ---------- MAIN PROGRAM ----------
46+
//---------------------------------------------------------------------
47+
if (import.meta.main) {
48+
49+
const ATLA = new Stack<string>();
50+
51+
printPeekStack(ATLA);
52+
ATLA.push('Sokka');
53+
ATLA.push('Katara');
54+
printPeekStack(ATLA);
55+
ATLA.push('Aang');
56+
ATLA.push('Appa');
57+
58+
printStack(ATLA);
59+
60+
printPopStack(ATLA);
61+
62+
printStack(ATLA);
63+
64+
printPopStack(ATLA);
65+
printPopStack(ATLA);
66+
printPopStack(ATLA);
67+
68+
printStack(ATLA);
69+
70+
ATLA.push('Zuko');
71+
ATLA.push('Iroh');
72+
73+
printStack(ATLA);
74+
75+
// RUN: deno run Data-Structures/Sequential/Stack.ts
76+
}

‎Data-Structures/Sequential/StackLL.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ export default class StackLL<T> {
1212
this.length = 0;
1313
}
1414

15+
public getLength(): number {
16+
return this.length;
17+
}
18+
1519
public peek(): T | null {
1620
return this.top?.getValue() || null;
1721
}
@@ -50,7 +54,7 @@ export default class StackLL<T> {
5054
const value = this.top.getValue(); // Retrieve top value of stack
5155
this.top = this.top.getNext(); // Move top pointer to next node
5256

53-
// On line 46, the reference to the top most node of the stack is lost
57+
// On line 55, the reference to the top most node of the stack is lost
5458
// The node is now floating in memory, waiting patiently for the garbage collector
5559

5660
--this.length;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /