栈(顺序存储结构)

wakingup wakingup     2022-10-24     624

关键词:

  • 堆栈:具有一定操作约束的线性表,只能在一端作插入、删除
  • 具有后入先出的特性(Last In First Out)
  • 顺序存储结构、链式存储结构两种形式



堆栈的顺序存储结构

通常由一个一维数组和一个栈顶元素变量组成

图解如下:

技术分享图片

技术分享图片

技术分享图片






形式一:构建结构体

0、结构初始化

#define MaxSize ###
struct StackNode 
    ElementType Data[MaxSize];
    int top;
;


1、建立空栈

struct StackNode* createStack() 
    struct StackNode* s=malloc(sizeof(struct StackNode));
    s->top=-1;

    return s;


2、push操作

void push(struct StackNode* s,ElementType x) 
    if (s->top!=MaxSize-1)
        return s->Data[++(s->top)]=x;
    else
        return NULL;


3、pop操作

ElementType pop(struct StackNode* s) 
    if (s->top!=-1)
        return s->Data[(s->top)--];
    else
        return NULL;

4、peek操作

ElementType peek(struct StackNode* s) 
    if (s->top!=-1)
        return s->Data[s->top];
    else
        return NULL;






形式二:简易模式

也可以省略结构体部分,直接声明数组,在函数中构建堆栈

//举例020 Valid Parentheses 这一题
bool isValid(char* s) 
    int len=strlen(s);
    if (*s==NULL) return false;
    if (len%2==1) return false;

    char stack[1000000];
    int top=-1;

    while (*s) 
        char c=*s;
        if (c==‘(‘||c==‘‘||c==‘[‘) 
            stack[++top]=c;
        
        else 
            if (c==‘)‘&&top>=0&&stack[top]==‘(‘)
                top--;
            else if (c==‘]‘&&top>=0&&stack[top]==‘[‘)
                top--;
            else if (c==‘‘&&top>=0&&stack[top]==‘‘)
                top--;
        
        s++;
    

    return top==-1;



















3.1栈的顺序存储结构(代码片段)

<?phpheader("content-type:text/html;charset=utf-8");/***栈的顺序存储结构的基本操作**包括*1.顺序栈的初始化__contruct()*2.销毁栈destroyStack()*3.清空栈clearStack()*4.判断栈是否为空stackEmpty()*5.获取栈顶元素getTop()*6.进栈操作push()*7.出栈操作pop() 查看详情

栈的顺序存储结构及及其实现

  由于栈是线性结构的一种,所以,栈也可以通过顺序存储结构实现。  因为,线性表的顺序存储结构是通过数组实现的,所以,栈的顺序存储结构也通过数组实现。不可避免的,要设置栈的最大存储空间。因为,... 查看详情

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

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

栈(链式存储结构)

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

顺序栈

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

线性结构-栈(代码片段)

...列一栈一.什么是栈进栈和出栈栈的实现方法栈的应用二.顺序栈三.链栈栈和队列栈和队列都属于线性表属于"一对一"逻辑关系栈:“先进后出”队列:“先进先出”一栈一.什么是栈看图理解(概念只是辅助理解_理解了才算学会... 查看详情

杠上数据结构-栈(代码片段)

...质是一种线性表,那么栈的存储结构也有两种:顺序存储结构(顺序栈)链式存储结构(链式栈)栈顺序存储结构栈的顺 查看详情

从源码分析栈的两种存储结构:顺序存储+链表存储

老规矩,还是贴别人的链接,用屁股想也知道,我是不可能给你分析的;http://blog.csdn.net/scu_daiwei/article/details/8537139        over... 查看详情

线性表的顺序存储结构和链式存储结构

前言上一篇《栈》中提到了栈的顺序存储结构和链式存储结构,现在就对此做个简单的比较。因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式。而栈和队列都是两种重要的线性表结构。所以本... 查看详情

杠上数据结构-栈(代码片段)

...质是一种线性表,那么栈的存储结构也有两种:顺序存储结构(顺序栈)链式存储结构(链式栈)栈顺序存储结构栈的顺序存储结构一般使用数组实现。数组中的第一个元素作为栈底,最后一个元素作为栈顶。publicclassArrayS... 查看详情

顺序栈(代码片段)

顺序栈顺序栈定义用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈的操作的特殊性,还必须附设一个栈顶指针(top)来动态的指示栈顶元素在顺序栈中的位置。通常以top... 查看详情

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

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

栈的顺序存储和链式存储(代码片段)

...n;//取栈顶元素publicObjectpeek()throwsStackEmptyException;  顺序存储结构实现   顺序栈是使用顺序存储结构实现的堆栈,即利用一组地址连续的存储单元依次存放堆栈中的数据元素。由于堆栈是一种特殊的线性表,因此在线... 查看详情

数据结构栈队列和数组(代码片段)

...存储结构对栈也是适用的,只是操作不同而已。  利用顺序存储方式实现的栈称为顺序栈。  与线性表类似,栈的动态分配顺序存储结构如下:#defineSTACK_INIT_SIZE100//存储空间的初始分配量#defineSTACKINCREMENT10//存储空间的分配... 查看详情

堆栈的定义和两种存储结构下堆栈的基本操作

文章目录栈的基本概念栈的顺序存储结构栈的链式存储结构栈的基本概念栈的顺序存储结构栈的链式存储结构 查看详情

栈的顺序存储结构及应用(cjava代码)

栈的定义:栈(stack)是限定仅在表尾进行插入和删除的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不包含任何数据元素的栈称为空栈,栈又称为先进后出的线性表,简称LIFO结构。栈的插入操作:... 查看详情

栈和队列

总览栈和队列的基本概念栈和队列的顺序存储结构栈和队列的链式存储结构栈和队列的应用特殊矩阵的压缩存储 栈的基本概念特点:先进后出,栈顶进栈顶出队列的基本概念特点:先进先出,队首进,队尾出顺序栈链栈应用... 查看详情

顺序栈

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