## 数据结构实现-栈和队列

news/2024/4/12 18:40:06/文章来源:https://blog.csdn.net/qq_61249949/article/details/136440266

``````#include <iostream>
using namespace std;
#define MaxSize 50//顺序栈
template<typename ElemType>
struct SqStack{ElemType data[MaxSize];int top;
};//初始化
template<typename ElemType>
void InitStack(SqStack<ElemType>&s){s.top=-1;
}//判断栈空
template<typename ElemType>
bool StackEmpty(SqStack<ElemType>&s){return s.top==-1;
}//进栈
template<typename ElemType>
bool Push(SqStack<ElemType>&s,ElemType x){if (s.top==MaxSize-1){return false;}s.data[++s.top]=x;return true;
}//出栈
template<typename ElemType>
bool Pop(SqStack<ElemType>&s,ElemType&x){if (s.top==-1){return false;}x=s.data[s.top--];return true;
}//读栈顶元素
template<typename ElemType>
bool GetTop(SqStack<ElemType>&s,ElemType&x){if (s.top==-1)return false;x=s.data[s.top];return true;
}
``````

``````#include <iostream>
using namespace std;
template<typename ElemType>
};
template<typename ElemType>
};//初始化
template<typename ElemType>
}//判栈空
template<typename ElemType>
}//进栈
template<typename ElemType>
}//出栈
template<typename ElemType>
bool Pop(LinkStack<ElemType>&s,ElemType&x){if (StackEmpty(s)){return false;}LinkNode<ElemType>*temp = s.rear;x = temp->data;s.rear = s.rear->next;delete temp;return true;
}//读栈顶元素
template<typename ElemType>
bool GetTop(LinkStack<ElemType>&s,ElemType&x){if (StackEmpty(s))return false;x = s.rear->data;return true;
}
``````

``````#include <iostream>
using namespace std;
#define MaxSize 10
template<typename ElemType>
struct SqQueue{ElemType data[MaxSize];int front,rear;
};//初始化
template<typename ElemType>
void InitQueue(SqQueue<ElemType>&Q){Q.front=Q.rear=0;//默认队列的头指针指向对头,尾指针指向尾部元素的下一个。
}//判队空
template<typename ElemType>
bool isEmpty(SqQueue<ElemType>&Q){return Q.front==Q.rear;
}//入队
template<typename ElemType>
bool EnQueue(SqQueue<ElemType>&Q,ElemType x){if ((Q.rear+1)%MaxSize==Q.front){return false;}Q.data[Q.rear] = x;Q.rear = (Q.rear+1)%MaxSize;return true;
}//出队
template<typename ElemType>
bool DeQueue(SqQueue<ElemType>&Q,ElemType&x){if (Q.rear==Q.front)return false;x=Q.data[Q.front];Q.front = (Q.front+1)%MaxSize;return true;
}int main(){SqQueue<int>sq;InitQueue(sq);for (int i = 0; i < 8; ++i) {EnQueue(sq,i);}int x;for (int i = 0; i < 3; ++i) {DeQueue(sq,x);}for (int i = 8; i < 10; ++i) {EnQueue(sq,i);}cout<<endl;
}
``````

``````#include <iostream>
using namespace std;
template<typename ElemType>
};
template<typename ElemType>
};//初始化
template<typename ElemType>
}template<typename ElemType>
}template<typename ElemType>
}template<typename ElemType>
}
``````

### 鸿蒙4.0-DevEco Studio界面工程

DevEco Studio界面工程 DevEco Studio 下载与第一个工程新建的第一个工程界面回到Project工程结构来看 DevEco Studio 下载与第一个工程 DevEco Studio 下载地址&#xff1a;点击跳转 https://developer.harmonyos.com/cn/develop/deveco-studio#download 学习课堂以及文档地址…

### AGM AG32 MCU系列（含AGRV2K）的内部PLL使用入门（一）

AG32 MCU(或AGRV2K)的整个器件只有一个 PLL 倍频模块&#xff08;mcu 和 cpld 共用&#xff09; 。倍频分频操作是封装在系统内部的&#xff08;用户无须也不能控制这个时钟树&#xff09; 。 实现原理&#xff1a; A. 系统会根据所有用到的频率项&#xff08;mcu 和 cpld 要用…

### 【nodejs】“__dirname is not defined”错误修复

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ 原理CommonJS vs ESM错误原因 2️⃣ 禁用 ESM 模式并改用 CommonJS方案一&#xff1a;项目方案二&#xff1a;单文件 3️⃣ 在 ESM 模式下自实现__dirname&#x1f4d6; 参考资料 &#x1f6eb; 问题 描述 从网上找了一份代码&am…

### 嵌入式面试

1.关键字static的作用是什么&#xff1f;为什么static变量只初始化一次&#xff1f; 1&#xff09;修饰局部变量&#xff1a;使得变量变成静态变量&#xff0c;存储在静态区&#xff0c;存储在静态区的数据周期和程序相同&#xff0c; 在main函数开始前初始化&#xff0c;在退…

### 打家劫舍(java版)

&#x1f4d1;前言 本文主要是【动态规划】——打家劫舍(java版)的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…

### chrome插件chrome.storage数据写入失败QUOTA_BYTES_PER_ITEM quota exceeded

Unchecked runtime.lastError while running storage.set: QUOTA_BYTES_PER_ITEM quota exceeded at Object.callback 在开发浏览器插件的时候&#xff0c;报错提示&#xff1a;超出存储限制&#xff0c;浏览器插件存储官方文档&#xff1a;https://developer.chrome.com/docs…

### 新书速览|PyTorch语音识别实战（人工智能技术丛书）

Model-based Adversarial Meta-Reinforcement Learning Abstract1. Introduction2. Related work3 Preliminaries基于模型的强化学习&#xff08;MBRL&#xff09;:区别和联系&#xff1a; 4 Model-based Adversarial Meta-Reinforcement Learning4.1 Formulation 4.2 Computin…

### vue+Nodejs+Koa搭建前后端系统（九）-- 上传图片

web2.0的到来使网页世界正式进入了寒武纪&#xff0c;各式各样的多媒体资源屡见不鲜&#xff0c;上传资源变得刻不容缓&#xff01; 前言 本文是在该系列的基础上&#xff0c;针对前后端代码的修改。 准备 HTTP上传图片时Content-Type值常见的有2种&#xff1a;application…

### Python之Web开发初学者教程—ubuntu下vi的使用

Python之Web开发初学者教程—ubuntu下vi的使用 vi\vim 文本编辑器 i 切换到输入模式&#xff0c;以输入字符。 x 删除当前光标所在处的字符。 : 切换到底线命令模式&#xff0c;以在最底一行输入命令。 vi 保存并退出&#xff1a;esc键退出编辑-…