JavaScript 数据结构与算法(一)数组与栈

JavaScript数组

  • JS的数组是对象封装的
    • 可以存放不同的数据类型
    • 拥有自动扩容机制
    • 中间插入和删除操作性能优于其他语言

Stack 栈

  • 一种受限的线性结构
  • 栈的应用:
    • 函数调用栈
      • A中调用B,B中调用C,C中调用D
      • 函数依次入栈:A-> B -> C -> D
      • 执行完出栈
  • 栈的实现(基于数组):
    • 属性:items: array = []
    • 方法:
      • push(element) 添加新元素到栈顶
      • pop() 移除栈顶元素,并返回
      • peek() 返回栈顶元素
      • isEmpty() 判断栈是否空
      • size() 返回栈的元素个数
      • toString() 返回栈数据构成的字符串
    • 代码:
const Stack = ()=>{
	// 属性
	this.items = []
	// 方法
	Stack.prototype.push=(element){
		return this.items.push(element)
	}
	Stack.prototype.pop= ()=>{
		return this.items.pop()
	}
	Stack.prototype.peek=()=>{
		return this.items[this.items.length-1]
	}
	Stack.prototype.isEmpty=()=>{
		return this.items.length === 0 ? true : false
	}
	Stack.prototype.size=()=>{
		return this.items.length
	}
	Stack.prototype.toString=()=>{
		let str = ''
		for(const el in this.items){
			str += el + ' ' // 暂时不考虑格式,更应该关注数据结构的实现
		}
		return str
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值