美文网首页
数据结构——栈

数据结构——栈

作者: 柏丘君 | 来源:发表于2018-02-07 22:14 被阅读0次

栈是线性表的一种衍生结构,是一种操作受限的线性表。在使用普通的线性表时,可以在任意位置进行操作,比如插入元素、删除元素、查找元素等。而栈只能在一端进行操作,并且不具备插入和查找的功能。

栈的基本结构

栈的基本结构如下所示:


栈的基本结构

栈是一种先进后出(FILO,First In Last Out)的数据结构,因此,如果将元素添加到栈中的顺序为 a1,a2,...,an,那么将元素从栈中移除的顺序就是 an,...,a2,a1。
栈有以下几个基本概念:

  1. 入栈
    将元素添加到栈中,也称为进栈、压栈。
  2. 出栈
    将元素从栈中移除,也成为退栈、弹栈。
  3. 栈顶
    入栈和出栈只能在栈的一端进行,叫做栈顶。
  4. 栈底
    相对于栈顶,栈的另外一端被称为栈底。

栈的代码实现

下面是栈的代码实现,在 JavaScript 中实现栈数据结构需要借助数组,其中进栈和出栈操作需要分别借助于数组的 push() 方法和 pop() 方法。

接口定义

interface IStack<T>{
    // 获取栈的长度
    size():number;
    // 压栈操作
    push(ele:T):T;
    // 出栈操作
    pop():T;
    // 获取栈顶的元素
    peek():T;
    // 清除栈中的元素
    clear():void;
    // 判断栈是否为空
    isEmpety():boolean;
    // 获取栈中的元素信息
    toString():T[];
}

接口实现

class Stack<T> implements IStack<T>{
    private _size:number = 0;
    private dataStore:T[] = [];
    size():number{
        // 获取栈的长度
        return this._size;
    }
    push(ele:T):T{
        // 向栈中插入元素,借助数组的 push 方法
        this.dataStore.push(ele);
        this._size++;
        return ele;
    }
    pop():T{
        // 从栈中移除元素,借助数组的 pop 方法
        const ele = this.dataStore.pop();
        this._size--;
        return ele;
    }
    peek():T{
        // 获取栈顶的元素
        const index = this._size ? (this._size - 1) : this._size;
        return this.dataStore[index];
    }
    clear():void{
        // 清除栈中的元素
        this.dataStore = [];
        this._size = 0;
    }
    isEmpety():boolean{
        // 判断栈是否为空
        return !this._size;
    }
    toString():T[]{
        // 返回栈中的元素信息
        return this.dataStore;
    }
}

可见,栈的实现比普通线性表(List)要简单许多,使用 JavaScript 实现栈还是比较容易的。

完。

相关文章

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • java高级知识点

    1.数据结构 程序=数据结构+算法 栈:后进先出,线性结构 入栈:push 出栈:pop假如已知入栈顺序是ab...

  • 栈和堆以及栈区和堆区的区别

    栈和堆以及栈区和堆区的区别 数据结构中的栈和堆 栈:具有先进后出性质的数据结构 堆:一种经过排序的树形数据结构,节...

  • 数据结构与算法 第二节:栈 栈: 一种先进后出的数据结构。可以想象成手枪的弹夹。 栈的特点: 栈的行为: 栈的代...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 什么是堆栈?

    堆与栈是两种数据结构,并不是一种数据结构,堆是堆,栈是栈。 1、栈:是一种只能在一端进行插入和删除的数据结构。 允...

  • 05--栈 递归

    栈 栈(Stack)又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线...

  • 18-04-21 python3 算法笔记 002基本数据结构

    线性数据结构 栈,队列,deques,列表其元素在数据结构中的位置由它被添加时的顺序决定。 栈 后进先出栈 LI...

  • 数据结构

    数据结构:要写!!手动!!数据结构非常简洁才可 栈 eg. 弹栈压栈的过程 链表 就是原型链不断的连接,要断去某个...

网友评论

      本文标题:数据结构——栈

      本文链接:https://www.haomeiwen.com/subject/sozazxtx.html