顺序栈

author author     2022-09-20     135

关键词:

1.栈是一种特殊的线性表,它只允许在表的一段进行删除和插入操作,是先进后出的线性表

2.栈的应用形式主要是作为一个第三方的工具使用,比如在递归算法变非递归算法的时候就要借住栈

<?php
/**
 * PHP实现栈
 * 2017/9/23
 */
class Stack
{
    private $stack = []; // 顺序栈
    private $top = -1; // 栈顶指针
    public function __construct()
    {
        $this->top = -1;
        $this->stack = [];
    }
    /**
     * 出栈
     * @param boolean $flag 用来判断出栈操作是否使用PHP自带的出栈函数,默认是不使用
     * @return boolean false代表栈为空,无法取出元素
     * @return mixed $elem 代表的是取出的元素值
     */
    public function pop($flag = false)
    {
        /* 空栈 */
        if ($this->isEmpty()) {
            return false;
        } else {
            /* 使用PHP自带的函数 */
            if ($flag) {
                $this->top--;
                return array_pop($this->stack);                
            } else {
                $elem = $this->stack[$this->top--]; // 先赋值后自减
                return $elem;
            }            
        }    
    }
    /**
     * 入栈
     * @param mixed $elem 要插入的元素值
     * @param boolean $flag 用来判断入栈操作是否使用PHP自带的入栈函数,默认是不适用
     * @return boolean true表示入栈成功,false表示失败
     */
    public function push($elem, $flag = false)
    {
        /* 元素是否存在判断 */
        if(!isset($elem)) return false;
        if ($flag) {
            array_push($this->stack, $elem);
            $this->top--;
        } else {
            $this->stack[++$this->top] = $elem; // 表达式的值先加一然后在自增
        }    
        return true;    
    }
    /**
     * 取出栈顶元素
     * @return mixed 栈顶元素
     */
    public function getTop()
    {
        if ($this->isEmpty()) {
            return false;
        } else {
            return $this->stack[$this->top];
        }
    }
    /**
     * 判断栈空
     * @return boolean true代表是空栈 fasle代表不是空栈
     */
    public function isEmpty()
    {
        return $this->top == -1 ? true : false;
    }
    /**
     * 判断栈的长度
     * @return int 返回长度
     */
    public function getSize()
    {
        return $this->top;
    }
}


?>

 

数据结构与算法栈与队列c语言版(代码片段)

...3.2栈、队列与一般线性表的区别3.3栈的表示和操作的实现顺序栈与顺序表=================顺序栈的表示顺序栈初始化判断顺序栈是否为空求顺序栈的长度清空顺序栈销毁顺序栈顺... 查看详情

数据结构学习笔记——顺序存储结构实现栈(代码片段)

目录一、栈的相关知识二、顺序栈的定义三、顺序栈的初始化四、判断顺序栈是否为空栈五、判断顺序栈是否为满栈六、进栈(插入操作)七、出栈(删除操作)八、读取顺序栈顶元素九、顺序栈的建立一个简单... 查看详情

数据结构第七章:链栈顺序栈

   查看详情

java实现栈(顺序栈,链栈)(代码片段)

顺序栈:packageSeqStack;publicclassStackprivateinttop;privateintbase[];privateintstackSize;publicStack()stackSize=100;base=newint[stackSize];top=-1;publicStack(intn)stackSize=n; 查看详情

顺序栈

...先出的线性表。由于栈本身是一个线性表,所以线性表的顺序存储结构和链式存储结构对于栈来说,同样是适用的。2.栈的顺序存储结构栈的顺序存储结构又称为顺序栈,线性表是用数组来实现的,而栈也是线性表,所以我们使... 查看详情

顺序栈

/* Name:顺序栈的实现 Copyright: Author: Date: Description:*/#ifndefSTACK_H_INCLUDED#defineSTACK_H_INCLUDED#include"ds.h"//forStatus,OK...#ifndefElemType#defineElemTypeint/*数据元素类型默认为 查看详情

数据结构学习笔记——栈的基本知识和顺序存储结构实现栈(顺序栈)(代码片段)

...列(三)共享栈(四)栈的常见应用二、顺序栈的定义三、顺序栈的初始化四、判断顺序栈是否为空栈五、判断顺序栈是否为满栈六、进栈(插入操作)七、出栈(删除操作)八、读取顺序栈顶元... 查看详情

顺序栈-使用顺序栈实现十进制转换二进制(代码片段)

1#include"stdio.h"2#defineMaxSize503typedefintDataType;4typedefstruct5DataTypeelem[MaxSize];6inttop;7SeqStack;8voidinitStack(SeqStack&s)910s.top=-1;1112intpush(SeqStack&s,DataTypex)1314if 查看详情

顺序栈

...借住栈<?php/***PHP实现栈*2017/9/23*/classStack{private$stack=[];//顺序栈private$top=-1;//栈顶指针publicfunction__construct(){$t 查看详情

栈基本操作(顺序栈)

#include<iostream>#include<cstdlib>usingnamespacestd;//定义初始化长度和每次增加的长度constintSTACK_INIT_SIZE=10;constintSTACK_INCREAMENT=2;structStack{int*base;//栈底int*top;//栈顶intstacksize;//已分配栈的大小};//函 查看详情

括号匹配问题(顺序栈实现)

...上传一个吧。那个有时间我再传上来~本周的要求:1.给出顺序栈的存储结构定义。2.完成顺序栈的基本操作函数。1)     初始化顺序栈2)     实现入栈和出栈操作3)     实现取... 查看详情

顺序栈链栈双端栈(代码片段)

...称为后进先出表(LastInFirstOut,简称LIFO)。栈的存储结构一:顺序存储    栈的顺序存储结构同样需要使用一个数组和一个整型变量来实现,利用数组来顺序存储栈中的所有元素,利用整型变量来存储栈顶元 查看详情

顺序栈

...须为这个结构体分配动态内存 否则无法使用  顺序栈:利用一组连续的存储单元依次存放自栈底到栈顶的数据元素;由于栈顶元素是经常变动的,所以附设top指示栈顶元素在顺序表中的位置  基本操作  1 查看详情

顺序栈stackc语言(代码片段)

顺序栈Stack【C语言】/*Byyangbocsu顺序栈Stack2021.07.21*/#include<stdio.h>#include"stdlib.h"/*预定义常量和类型*//*函数结果状态码*/#defineTRUE 1#defineFALSE 0#defineOK 1#defineERROR0 查看详情

顺序栈的基本操作

...始条件#include<stdlib.h>#include<stdio.h>#defineMAXSIZE100顺序栈的存储结构:须有一个一维数组去存放栈中的基本元素,还要栈顶指针,用来存放栈顶元素的下标typedefstructSqStack{ intelem; inttop;}SqStack,*stack_type; 接着开始栈的初始... 查看详情

栈(顺序存储结构)

...一端作插入、删除具有后入先出的特性(LastInFirstOut)分顺序存储结构、链式存储结构两种形式堆栈的顺序存储结构通常由一个一维数组和一个栈顶元素变量组成图解如下:形式一:构建结构体0、结构初始化#defineMaxSize###structStac... 查看详情

王道3.1顺序栈以及链式栈(代码片段)

顺序栈以及链式栈一、的基本概念二、栈的储存三、顺序栈的基本操作四、链式栈的基本操作一、的基本概念1.栈只允许在一段进行删除或插入操作的线性表2.三个术语①栈顶top:线性表允许进行插入删除的那一端②栈底bottom... 查看详情

数据结构(c语言版)严蔚敏->顺序栈的定义利用顺序栈解决有效的括号(代码片段)

头文件SqStack.h#ifndefSQSTACK_H_INCLUDED#defineSQSTACK_H_INCLUDED//顺序栈#defineMax_Stack_Size50typedefcharElemType;typedefstructElemTypedata[Max_Stack_Size];//存放栈中的元素inttop;//栈顶指针SqStack;voidInitSqStack(Sq 查看详情