算法通关村第四关——如何基于数组实现栈

1.栈的基础知识

1.1 栈的特征

栈(Stack):具有一定操作约束的线性表,只在一端(栈顶,Top)做插入(Push)、删除(Pop),不可操作的一端称为栈底(Bottom)。后进先出(Last In First Out, LIFO),若栈中没有元素则称为空栈。

在这里插入图片描述

  • 栈的顺序存储实现(基于数组):栈的顺序存储结构通常由一个一维数组和一个记录栈顶元素位置的变量组成。
  • 栈的链式存储实现(基于链表):栈的链式存储结构实际就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。Top只能在链表首端。

栈可以用于表达式求值,如后缀表达式求值、中缀表达式求值、函数调用及递归实现、深度优先搜索、回溯算法等

栈的常用操作主要有:

  • push(E):增加一个元素E
  • pop():弹出一个栈顶元素
  • peek():显示栈顶元素,但是不出栈
  • empty():判断栈是否为空

在设计栈时,不管用数组还是链表,都需要实现上面几个方法。

2.JavaScript中基于数组实现栈

代码如下:文章来源地址https://uudwc.com/A/9vDD3

const stack = []; // 新建一个数组
// 如果规定数组尾端为栈顶,首端为栈底
// 用下面几个方法实现后进先出的规定

stack.push(); // 将指定的元素添加到数组的末尾,并返回新的数组长度
stack.pop(); // 从数组中删除最后一个元素,并返回该元素的值
satck.at(-1) // 返回数组末尾元素
// 判断是否为空栈
let isEmpty = function(stack) {
	if (stack.length === 0) return false;
    else return true;
}

// 此外,JavaScript的数组类型还有下面的方法
stack.shift(); // 从数组中删除第一个元素,并返回该元素的值
stack.unshift(); // 将指定元素添加到数组的开头,并返回数组的新长度

原文地址:https://blog.csdn.net/qq_41488033/article/details/132112909

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年08月11日 10:30
2022职业教育技能大赛网络安全A模块安全加固,少见新题
下一篇 2023年08月11日 10:36