博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈(链式存储结构)
阅读量:5146 次
发布时间:2019-06-13

本文共 1395 字,大约阅读时间需要 4 分钟。

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

堆栈的顺序存储结构

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

图解如下:

stack001.jpg

stack002.jpg

stack003.jpg

形式一:构建结构体

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;}

转载于:https://www.cnblogs.com/WakingUp/p/8543405.html

你可能感兴趣的文章
android与c# socket通信出现java.net.SocketTimeoutException错误
查看>>
基础小问题
查看>>
软件工程10道题
查看>>
python之打印日志logging
查看>>
相位插值
查看>>
C语言其他知识总结
查看>>
考勤系统 人员排班设置
查看>>
PHP获取自然周列表,周开始结束日期,月开始结束时间方法类
查看>>
汇编学习总结
查看>>
初识markdown
查看>>
jsp页面间传递参数 中文乱码问题(zz)
查看>>
计算科学的研究是什么?
查看>>
关于时钟频率
查看>>
网页生成图片快照
查看>>
php file_get_contents函数分段读取大记事本或其它文本文件
查看>>
WCF的https安全(ssl)访问实例
查看>>
vi查找替换命令详解
查看>>
bzoj1086 [SCOI2005]王室联邦 树分块
查看>>
20.网络编程
查看>>
SQL基础
查看>>