📅  最后修改于: 2023-12-03 15:05:39.489000             🧑  作者: Mango
在程序中,我们常常需要使用到数据结构,其中堆栈(stack)是其中之一。堆栈是一种后进先出(LIFO)的数据结构,可以用数组或链表来实现。在TypeScript中,我们可以使用数组来实现堆栈。
下面我们来看一个数组实现堆栈的例子:
class Stack<T> {
private items: T[];
constructor() {
this.items = [];
}
push(item: T) {
this.items.push(item);
}
pop(): T | undefined {
return this.items.pop();
}
peek(): T | undefined {
return this.items[this.items.length - 1];
}
isEmpty(): boolean {
return this.items.length === 0;
}
clear() {
this.items = [];
}
size(): number {
return this.items.length;
}
toArray(): T[] {
return this.items.slice();
}
}
const stack = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 3
console.log(stack.pop()); // 2
console.log(stack.peek()); // 1
console.log(stack.size()); // 1
console.log(stack.toArray()); // [1]
上述代码使用了泛型来表示堆栈中的数据类型。我们通过private items: T[];
来声明堆栈中的数组,在constructor
函数中进行初始化。接下来,我们定义了push
、pop
、peek
、isEmpty
、clear
、size
和toArray
等方法。
push(item: T)
方法用于向堆栈中添加数据,pop(): T | undefined
方法用于从堆栈中取出最后一个数据并移除它,peek(): T | undefined
方法用于获取最后一个数据,但是不移除它。
isEmpty(): boolean
方法用于判断堆栈是否为空,clear()
方法用于清空堆栈中的数据。size(): number
方法用于获取堆栈中数据的个数,toArray(): T[]
方法用于将堆栈中的数据转换成数组返回。
以上是一个简单的数组实现堆栈的例子,类型安全、易于理解、易于使用、适合小型数据量堆栈的场景。当然,对于大型数据量堆栈,我们需要使用链表实现堆栈。