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

苏州市建设中心网站北京公司注册地址多少钱

苏州市建设中心网站,北京公司注册地址多少钱,建设什么网站可以上传视频,大学生活动网站开发文案纯C语言代码#xff0c;不涉及C 想了解链式栈的实现#xff0c;欢迎查看这篇文章#xff1a;C语言_数据结构总结6#xff1a;链式栈-CSDN博客 这里分享插入一下个人觉得很有用的习惯#xff1a; 1. 就是遇到代码哪里不理解的#xff0c;你就问豆包#xff0c;C知道不涉及C 想了解链式栈的实现欢迎查看这篇文章C语言_数据结构总结6链式栈-CSDN博客 这里分享插入一下个人觉得很有用的习惯 1. 就是遇到代码哪里不理解的你就问豆包C知道Kimi等等AI工具比如在这栈中你不能理解为什么有时候要传一级指针有时候又不用你就询问AI“在进栈操作中是否可以不传入指针变量而是直接传入结构体变量” 2. 还有就是自己的代码报错了又或是自己觉得自己的代码存在某种问题而自己又不能解决时你就直接复制自己的代码问AI让AI对以下代码进行点评并返回改善后的代码。 前言 栈是只允许在一端进行插入或删除操作的线性表。 栈顶允许进行插入或删除的那一端 栈底固定的不允许进行插入或删除的那一端 栈的特性后进先出 存储方式1. 顺序存储顺序栈  2. 链式存储链式栈 在顺序栈的基本操作中决定是传入一级指针还是只传入栈的变量主要取决于操作是否需要修改栈的内部状态。     1. 需要传入一级指针的情况     当操作需要修改栈的内部状态比如改变栈顶指针 top 的值或者修改栈中存储的数据时就需要传入一级指针。     这是因为在 C 语言里函数参数传递是值传递若直接传入栈的变量函数内部对该变量的修改不会影响到原变量。     而通过传入指针函数可以直接访问和修改原变量所指向的内存。 2. 只需要传入栈的变量的情况     当操作不需要修改栈的内部状态仅仅是读取栈的信息时就可以只传入栈的变量。 以下是顺序栈实现 它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素同时附设一个指针top指示当前的栈顶元素的位置 0. 结构单元 #define MaxSize 50 typedef int ElemType; typedef struct SqStack {     ElemType data[MaxSize];  //存放栈中元素     int top;  //栈顶指针 }SqStack; 注意  栈顶指针top,它不是实际意义上的指针变量进行存放指针变量。这里说它是指针意思是说它指示了当前栈顶元素的位置在第pos个位置。 1. 初始化 void InitSeqStack(SqStack* s) {s-top -1; //初始化栈顶的位置 } 这里设置初始栈顶指针s.top -1, 栈空条件是s.top -1;栈满条件是s.top MaxSize - 1 则进栈时指针s.top1,再将元素加入栈顶出栈时先取出栈顶元素后指针s.top - 1 但如果设置初始栈顶指针s.top 0, 栈空条件是s.top 0;栈满条件是s.top MaxSize 则进栈时将元素加入栈顶,再指针s.top1出栈时先指针s.top - 1后取出栈顶元素 2. 判空 int SqStackEmpty(SqStack s) {return s.top -1; } 3. 判满 int SqStackFull(SqStack s) {return s.top MaxSize - 1; } 4. 入栈 即将元素加入到栈顶 int push(SqStack* s, ElemType value) {// 1. 判满if (SqStackFull(*s)){printf(栈满无法入栈!\n);return -2;}// 2. 指针top 1再将值加入到栈顶s-top;s-data[s-top] value;return 0; //入栈成功 } 5. 出栈 int pop(SqStack* s, ElemType* value) {//1. 判空if (SqStackEmpty(*s)){printf(栈空无法有元素出栈!\n);return -1;}//2. 先取出栈顶元素再指针top - 1*value s-data[s-top];s-top--;return 0; //出栈成功 } 6. 获取栈顶元素 int getTop(SqStack s,ElemType *value) {//1. 判空if (SqStackEmpty(s)){printf(栈空无法有元素出栈!\n);return -1;}//2. 获取栈顶元素*value s.data[s.top];return 0; } 7. 打印栈中元素 void printSqStack(SqStack s) {if (SqStackEmpty(s)){printf(栈空!\n);return; //提前结束该函数}printf(栈中的元素从栈底到栈顶为: );for (int i 0; i s.top; i) {printf(%d , s.data[i]);}printf(\n); } 8. 销毁 void destroySqStack(SqStack* s) {// 由于顺序栈使用的是静态数组不需要显式释放内存// 只需要将栈顶指针置为 -1 表示栈为空s-top -1; } 9. 测试 int main() {SqStack s;InitSeqStack(s);// 测试入栈操作push(s, 11);push(s, 22);push(s, 33);printSqStack(s); // 栈中的元素从栈底到栈顶为: 11 22 33// 获取栈顶元素ElemType value;if (getTop(s,value) 0){printf(当前栈顶元素为%d\n, value); // 当前栈顶元素为33}//测试出栈操作if (pop(s,value) 0){printf(出栈的元素为%d\n, value); // 出栈的元素为33}printSqStack(s); // 栈中的元素从栈底到栈顶为: 11 22//销毁栈destroySqStack(s);printSqStack(s); // 栈空!return 0; } 10. 完整代码 #includestdio.h #includestdlib.h /*栈是只允许在一端进行插入或删除操作的线性表。栈顶允许进行插入或删除的那一端栈底固定的不允许进行插入或删除的那一端栈的特性后进先出存储方式1. 顺序存储顺序栈 2. 链式存储链式栈 *//*在顺序栈的基本操作中决定是传入一级指针还是只传入栈的变量主要取决于操作是否需要修改栈的内部状态。1. 需要传入一级指针的情况当操作需要修改栈的内部状态比如改变栈顶指针 top 的值或者修改栈中存储的数据时就需要传入一级指针。这是因为在 C 语言里函数参数传递是值传递若直接传入栈的变量函数内部对该变量的修改不会影响到原变量。而通过传入指针函数可以直接访问和修改原变量所指向的内存。2. 只需要传入栈的变量的情况当操作不需要修改栈的内部状态仅仅是读取栈的信息时就可以只传入栈的变量。*//*以下是顺序栈实现它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素同时附设一个指针top指示当前的栈顶元素的位置 */#define MaxSize 50 typedef int ElemType; typedef struct SqStack {ElemType data[MaxSize]; //存放栈中元素int top; //栈顶指针注意它不是实际意义上的指针变量进行存放指针变量。这里说它是指针意思是说它指示了当前栈顶元素的位置在第pos个位置。 }SqStack;// 操作1——初始化 void InitSeqStack(SqStack* s) {s-top -1; //初始化栈顶的位置 }/*这里设置初始栈顶指针s.top -1,栈空条件是s.top -1;栈满条件是s.top MaxSize - 1则进栈时指针s.top1,再将元素加入栈顶出栈时先取出栈顶元素后指针s.top - 1但如果设置初始栈顶指针s.top 0,栈空条件是s.top 0;栈满条件是s.top MaxSize则进栈时将元素加入栈顶,再指针s.top1出栈时先指针s.top - 1后取出栈顶元素 */// 操作2——判空 int SqStackEmpty(SqStack s) {return s.top -1; }// 操作3——判满 int SqStackFull(SqStack s) {return s.top MaxSize - 1; }// 操作4——入栈,将元素加到栈顶 int push(SqStack* s, ElemType value) {// 1. 判满if (SqStackFull(*s)){printf(栈满无法入栈!\n);return -2;}// 2. 指针top 1再将值加入到栈顶s-top;s-data[s-top] value;return 0; //入栈成功 }// 操作5——出栈 int pop(SqStack* s, ElemType* value) {//1. 判空if (SqStackEmpty(*s)){printf(栈空无法有元素出栈!\n);return -1;}//2. 先取出栈顶元素再指针top - 1*value s-data[s-top];s-top--;return 0; //出栈成功 }// 操作6——获取栈顶元素 int getTop(SqStack s,ElemType *value) {//1. 判空if (SqStackEmpty(s)){printf(栈空无法有元素出栈!\n);return -1;}//2. 获取栈顶元素*value s.data[s.top];return 0; }// 操作7——打印栈中元素 void printSqStack(SqStack s) {if (SqStackEmpty(s)){printf(栈空!\n);return; //提前结束该函数}printf(栈中的元素从栈底到栈顶为: );for (int i 0; i s.top; i) {printf(%d , s.data[i]);}printf(\n); }// 操作8——销毁栈 void destroySqStack(SqStack* s) {// 由于顺序栈使用的是静态数组不需要显式释放内存// 只需要将栈顶指针置为 -1 表示栈为空s-top -1; }int main() {SqStack s;InitSeqStack(s);// 测试入栈操作push(s, 11);push(s, 22);push(s, 33);printSqStack(s); // 栈中的元素从栈底到栈顶为: 11 22 33// 获取栈顶元素ElemType value;if (getTop(s,value) 0){printf(当前栈顶元素为%d\n, value); // 当前栈顶元素为33}//测试出栈操作if (pop(s,value) 0){printf(出栈的元素为%d\n, value); // 出栈的元素为33}printSqStack(s); // 栈中的元素从栈底到栈顶为: 11 22//销毁栈destroySqStack(s);printSqStack(s); // 栈空!return 0; } 11. 运行截图 本人菜鸟一只文章如有出错处欢迎评论区指正
http://www.pierceye.com/news/439776/

相关文章:

  • 网站建设的流程是什么意思微信小程序的代码
  • 广州网站整站优化html项目案例实战
  • 宁波网站推广方式seo优化按天扣费
  • 紫金优化网站制作python编程100例
  • 原阳网站建设哪家好域名网址
  • 西安学校网站建设wordpress手机端模板下载
  • 泉州网站建设工作室网站上的产品板块
  • 平顶山网站网站建设网页设计与制作教程 刘瑞信 pdf
  • 网站开发深天津设计公司排行榜
  • 做tcf法语听力题的网站公司网页简介
  • 十堰做网站最专业的公司深圳企业网查询
  • 购物网站大全排名调查drupal与wordpress哪个容易
  • 网站建设彳金手指排名网站开发完没人运营
  • 网站建设是设开发公司质量管理流程
  • 金沙网站怎么做代理wordpress tag=
  • 做网站必须花钱吗建筑人才网证书查询
  • 0基础网站建设模板工商注册官方网站
  • 河南网站设计公司价格网站在建设中是什么意思
  • 网站建设公司的成本有哪些方面四川省城乡建设网查询
  • 和什么人合作做游戏视频网站做推送网站
  • 做竞价网站访问突然变少施工企业负责人带班检查计划
  • 网站统计数据分析wordpress安装 第二步
  • 网站续费续的是什么钱Wordpress1002无标题
  • 公司入口网站appui设计师创意平台
  • 济南住房和城乡建设厅网站影视广告创意拍摄
  • 卢松松网站源码网站建设讲师招聘
  • wordpress建站网页无法运vs网站开发表格大小设置
  • 网站怎么制作教程科技小论文怎么写
  • 青岛外贸建设网站制作小程序制作页面教程
  • wordpress 整合phpseo推广有效果吗