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;
    }
    
  • 相关阅读:
    文件操作
    验证进程 及jion方法
    进程笔记
    网络通信名词总结
    网络QQ聊天代码实例
    网络通信 粘包和 缓冲器
    udp
    UVALive 3983 Robotruck (单调队列,dp)
    UVA 10891 Game of Sum (决策优化)
    Uva 10635 Prince and Princess (LCS变形LIS)
  • 原文地址:https://www.cnblogs.com/WakingUp/p/8543405.html
Copyright © 2011-2022 走看看