diff --git a/codes/javascript/chapter_stack_and_queue/array_stack.js b/codes/javascript/chapter_stack_and_queue/array_stack.js new file mode 100644 index 000000000..a83d16f0e --- /dev/null +++ b/codes/javascript/chapter_stack_and_queue/array_stack.js @@ -0,0 +1,84 @@ +/** + * File: array_stack.js + * Created Time: 2022-12-09 + * Author: S-N-O-R-L-A-X (snorlax.xu@outlook.com) + */ + + +/* 基于数组实现的栈 */ +class ArrayStack { + stack; + constructor() { + this.stack = []; + } + /* 获取栈的长度 */ + get size() { + return this.stack.length; + } + + /* 判断栈是否为空 */ + empty() { + return this.stack.length === 0; + } + + /* 入栈 */ + push(num) { + this.stack.push(num); + } + + /* 出栈 */ + pop() { + return this.stack.pop(); + } + + /* 访问栈顶元素 */ + top() { + return this.stack[this.stack.length - 1]; + } + + /* 访问索引 index 处元素 */ + get(index) { + return this.stack[index]; + } + + /* 返回 Array */ + toArray() { + return this.stack; + } +}; + + +/* Driver Code */ + +/* 初始化栈 */ +const stack = new ArrayStack(); + +/* 元素入栈 */ +stack.push(1); +stack.push(3); +stack.push(2); +stack.push(5); +stack.push(4); +console.log("栈 stack = "); +console.log(stack.toArray()); + +/* 访问栈顶元素 */ +const top = stack.top(); +console.log("栈顶元素 top = " + top); + +/* 访问索引 index 处元素 */ +const num = stack.get(3); +console.log("栈索引 3 处的元素为 num = " + num); + +/* 元素出栈 */ +const pop = stack.pop(); +console.log("出栈元素 pop = " + pop + ",出栈后 stack = "); +console.log(stack.toArray()); + +/* 获取栈的长度 */ +const size = stack.size; +console.log("栈的长度 size = " + size); + +/* 判断是否为空 */ +const empty = stack.empty(); +console.log("栈是否为空 = " + empty); diff --git a/codes/typescript/chapter_stack_and_queue/array_stack.ts b/codes/typescript/chapter_stack_and_queue/array_stack.ts new file mode 100644 index 000000000..5a57b6cf7 --- /dev/null +++ b/codes/typescript/chapter_stack_and_queue/array_stack.ts @@ -0,0 +1,86 @@ +/** + * File: array_stack.ts + * Created Time: 2022-12-08 + * Author: S-N-O-R-L-A-X (snorlax.xu@outlook.com) + */ + + +/* 基于数组实现的栈 */ +class ArrayStack { + private stack: number[]; + constructor() { + this.stack = []; + } + /* 获取栈的长度 */ + get size(): number { + return this.stack.length; + } + + /* 判断栈是否为空 */ + empty(): boolean { + return this.stack.length === 0; + } + + /* 入栈 */ + push(num: number): void { + this.stack.push(num); + } + + /* 出栈 */ + pop(): number | undefined { + return this.stack.pop(); + } + + /* 访问栈顶元素 */ + top(): number | undefined { + return this.stack[this.stack.length - 1]; + } + + /* 访问索引 index 处元素 */ + get(index: number): number | undefined { + return this.stack[index]; + } + + /* 返回 Array */ + toArray() { + return this.stack; + } +}; + + +/* Driver Code */ + +/* 初始化栈 */ +const stack = new ArrayStack(); + +/* 元素入栈 */ +stack.push(1); +stack.push(3); +stack.push(2); +stack.push(5); +stack.push(4); +console.log("栈 stack = "); +console.log(stack.toArray()); + +/* 访问栈顶元素 */ +const top = stack.top(); +console.log("栈顶元素 top = " + top); + +/* 访问索引 index 处元素 */ +const num = stack.get(3); +console.log("栈索引 3 处的元素为 num = " + num); + +/* 元素出栈 */ +const pop = stack.pop(); +console.log("出栈元素 pop = " + pop + ",出栈后 stack = "); +console.log(stack.toArray()); + +/* 获取栈的长度 */ +const size = stack.size; +console.log("栈的长度 size = " + size); + +/* 判断是否为空 */ +const empty = stack.empty(); +console.log("栈是否为空 = " + empty); + +export { }; \ No newline at end of file diff --git a/docs/chapter_stack_and_queue/stack.md b/docs/chapter_stack_and_queue/stack.md index eed703353..d988bdfe7 100644 --- a/docs/chapter_stack_and_queue/stack.md +++ b/docs/chapter_stack_and_queue/stack.md @@ -397,13 +397,13 @@ comments: true === "JavaScript" ```js title="linkedlist_stack.js" - + ``` === "TypeScript" ```typescript title="linkedlist_stack.ts" - + ``` === "C" @@ -587,13 +587,93 @@ comments: true === "JavaScript" ```js title="array_stack.js" + /* 基于数组实现的栈 */ + class ArrayStack { + stack; + constructor() { + this.stack = []; + } + /* 获取栈的长度 */ + get size() { + return this.stack.length; + } + + /* 判断栈是否为空 */ + empty() { + return this.stack.length === 0; + } + /* 入栈 */ + push(num) { + this.stack.push(num); + } + + /* 出栈 */ + pop() { + return this.stack.pop(); + } + + /* 访问栈顶元素 */ + top() { + return this.stack[this.stack.length - 1]; + } + + /* 访问索引 index 处元素 */ + get(index) { + return this.stack[index]; + } + + /* 返回 Array */ + toArray() { + return this.stack; + } + }; ``` === "TypeScript" ```typescript title="array_stack.ts" + /* 基于数组实现的栈 */ + class ArrayStack { + private stack: number[]; + constructor() { + this.stack = []; + } + /* 获取栈的长度 */ + get size(): number { + return this.stack.length; + } + + /* 判断栈是否为空 */ + empty(): boolean { + return this.stack.length === 0; + } + + /* 入栈 */ + push(num: number): void { + this.stack.push(num); + } + /* 出栈 */ + pop(): number | undefined { + return this.stack.pop(); + } + + /* 访问栈顶元素 */ + top(): number | undefined { + return this.stack[this.stack.length - 1]; + } + + /* 访问索引 index 处元素 */ + get(index: number): number | undefined { + return this.stack[index]; + } + + /* 返回 Array */ + toArray() { + return this.stack; + } + }; ``` === "C"