zoukankan      html  css  js  c++  java
  • 栈(链式存储结构)

    • 堆栈:具有一定操作约束的线性表,只能在一端作插入、删除
    • 具有后入先出的特性(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;
    }
    
  • 相关阅读:
    LeetCode77. 组合
    LeetCode76. 最小覆盖子串
    LeetCode75. 颜色分类
    LeetCode74. 搜索二维矩阵
    LeetCode73. 矩阵置零
    LeetCode72. 编辑距离
    MySQL数据库基础知识点
    程序开发必知必会的MySQL基本命令行操作
    程序开发必知必会的Mysql数据库——初识
    初识HTML
  • 原文地址:https://www.cnblogs.com/WakingUp/p/8543405.html
Copyright © 2011-2022 走看看