当前位置: 首页 > news >正文

3-栈、队列、数组

一-栈

1-概念

栈是只允许在一端进行插入或删除操作的线性表
在这里插入图片描述
后进先出(LIFO)

2-顺序存储实现

//定义一个栈
#define MaxSize 10
typedef struct{
    ElemType data[MaxSize];
    //栈顶指针
    int top;
}SqStack;

//初始化栈,栈顶指针也可以初始化为0
void InitStack(SqStack &S){
    S.top=-1;
}

//进栈
bool Push(SqStack &S, ElemType x){
    //栈满
    if(S.top==MaxSize-1)
        return false;
    //元素进栈,等价于S.data[++S.top]=x;
    S.top = S.top + 1;
    S.data[S.top]=x;
    return true;
}

//出栈
bool Pop(SqStack &S, ElemType &x){
    //栈空
    if(S.top==-1)
        return false;
    //栈顶元素先出栈,等价于x=S.data[S.top--];
    x=S.data[S.top];
    S.top=S.top-1;
    return true;
}

//读取栈顶元素
bool GetTop(SqStack &S, ElemType &x){
    if(S.top==-1)
        return false;
    x=S.data[S.top];
    return false;
}

void testStack(){
    SqStack S;
    InitStack(S);
}

共享栈:两个栈共享同一片内存空间,两个栈从两边往中间增长

//定义
#define MaxSize 10
typedef struct{
    ElemType data[MaxSize];
    //0号栈
    int top0;
    //1号栈
    int top1;
}SqStack;

//初始化
void InitStack(ShStack &S){
    S.top=-1;
    S.top=MaxSize;
}

//栈满条件
top0 + 1 == top1

在这里插入图片描述

3-链式存储实现

类似于单链表,单链表有头插法和尾插法,栈的实现是只有头插法。

二-队列

1-概念

只允许在一端进行插入,在另一端删除的线性表
在这里插入图片描述
先进先出(FIFO)

2-顺序实现(循环队列)

//定义
#define MaxSize 10
typedef struct{
    ElemType data[MaxSize];
    //队头指针和队尾指针
    int front,rear;
}SqQueue;

//初始化
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;
}

void testQueue(){
    SqQueue Q;
}

3-链式实现

4-双端队列

三-栈和队列的应用

1-栈在括号匹配中的应用

2-栈在表达式求值中的应用

3-栈在递归中的应用

4-队列的应用

四-数组和特殊矩阵

相关文章:

  • AIGC(生成式AI)试用 29 -- 用AI写读书笔记
  • 【 Vue 2 中的 Mixins 模式】
  • AI换脸工具--FaceFusion 整合包
  • 13 配置Hadoop集群-测试使用
  • harmony OS NEXT-沉浸式布局实现笔记
  • CSS层叠顺序
  • 算法竞赛备赛——【数据结构】并查集
  • Hexo + Fluid博客实现自定义图标
  • Verilog HDL 100道面试题及参考答案
  • 目前市场上,好用的校招系统是哪个?
  • 我与数学建模之启程
  • C/C++网络编程【1】----- 大纲
  • 【深度视觉】第十八章:YOLO系列1
  • Jetpack Room 使用与原理解析
  • Vue2 vs Vue3 生命周期全面对比:created 的进化与革新!!!
  • String数据结构之验证码实战
  • Unity3D仿星露谷物语开发32之地面属性决定角色动作
  • 【Django】教程-5-ModelForm增删改查+规则校验【正则+钩子函数】
  • 数据库表省市区分析
  • Kubernetes可视化面板——KubePi(Kubernetes Visualization Panel - kubepi)
  • 网站内容上传/网站推广和优化的原因
  • 个人是否可以做网站/如何创建自己的卡网
  • wordpress多说插件/西安seo优化公司
  • 网站建设佰金手指科杰二六/哪个公司要做网络推广
  • 动态网站如何做登录界面/无货源网店怎么开
  • 做的好的淘宝客网站/怎么开发网站