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

做聚划算网站软件项目管理制度

做聚划算网站,软件项目管理制度,哪个网站可以做结婚请柬,北京网站建设公司哪些好个人主页 #xff1a; 个人主页 个人专栏 #xff1a; 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、… 个人主页 个人主页 个人专栏 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、代码实现总结 前言 栈一种特殊的线性结构其只允许在一端进行插入删除数据。允许操作数据的一端被称为栈顶另一端被称为栈底。 本篇博客将要实现的是数组栈。 一、栈的实现思路 对于栈的特殊性用数组(在数组尾部插入删除数据) 和 链表(头插头删数据)实现栈的时间复杂度都是O(1)难度不大。 数组栈的优劣 优 数组支持随机访问(用下标访问数据)许多算法需要随机访问的支持如二分法…缓存利用率高 劣 空间不够时要扩容有时会造成空间浪费 1. 结构的定义 栈的结构非常简单 一个指向动态开辟空间的指针一个记录实际空间大小的变量一个记录栈顶元素的下标即可。 typedef int STDataType;typedef struct Stack {STDataType* data;int top;//栈顶下标int capacity;//空间大小 }Stack;2. 初始化栈(StackInit) data指针指向动态开辟的空间capacity记录此时空间大小top置为0。 top 置0表示栈顶数据将要插入的位置。top 置-1表示此时栈顶数据的位置。 这里采用top 置0。 //初始化栈#define SIZE 4void StackInit(Stack* ps) {assert(ps);ps-data (STDataType*)malloc(sizeof(STDataType) * SIZE);if (ps-data NULL){perror(malloc);exit(-1);}ps-top 0;ps-capacity SIZE; }3. 入栈(StackPush) 因为top初始化为0所以直接在top下标处入数据即可。但要注意在入数据前要检查容量如果top capacity 要扩容。 此处检查容量的操作可以封装成一个函数但没必要因为栈的操作只有入栈要检查容量其它的操作并不需要检查容量封装成一个函数反而效率减低了(函数的调用要形成函数栈帧)。 //入栈 void StackPush(Stack* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){STDataType* tmp (STDataType*)realloc(ps-data, sizeof(STDataType) * (ps-capacity * 2));if (tmp NULL){perror(realloc);exit(-1);}ps-data tmp;ps-capacity * 2;}ps-data[ps-top] x;ps-top; }4. 出栈(StackPop) top 表示的是栈顶数据将要入栈的位置那么出栈操作只需要让top 减 1即可。(下次入栈数据会直接覆盖) 但要注意top 0 时表示栈内没有数据不能进行出栈操作。 出栈操作不能获取数据 //出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top ! 0);ps-top--; }5. 获取栈顶元素(StackTop) top 指向的是数据将要入栈的位置也就是栈顶数据的下一个位置。 那么要获取栈顶数据只需要读取top - 1处即可。但要注意如果top 0那么top - 1 -1会越界访问所以top 0 时不能获取栈顶元素。 //获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(ps-top 0);return ps-data[ps-top - 1]; }6. 检查栈是否为空(StackEmpty) top 指向的是数据将要入栈的位置其数值也表示栈内数据个数。 所以我们只需要进行 top 0 的判断即可知道栈是否为空。 //检查栈是否为空 bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }7. 销毁栈(StackDestroy) free掉动态开辟的空间使capacity 置 0top 置 0。 //销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-data);ps-top 0;ps-capacity 0; }二、代码实现 Stack.h 文件存放的是函数的声明头文件的引用结构体的定义 Stack.c 文件存放的是函数的实现 //Stack.h 文件#pragma once#include stdio.h #include stdlib.h #include assert.h #include stdbool.h#define SIZE 4typedef int STDataType;typedef struct Stack {STDataType* data;int top;int capacity; }Stack;//初始化栈 void StackInit(Stack* ps);//入栈 void StackPush(Stack* ps, STDataType x);//出栈 void StackPop(Stack* ps);//获取栈顶元素 STDataType StackTop(Stack* ps);//检查栈是否为空 bool StackEmpty(Stack* ps);//销毁栈 void StackDestroy(Stack* ps); //Stack.c 文件#include Stack.h//初始化栈 void StackInit(Stack* ps) {assert(ps);ps-data (STDataType*)malloc(sizeof(STDataType) * SIZE);if (ps-data NULL){perror(malloc);exit(-1);}ps-top 0;ps-capacity SIZE; }//入栈 void StackPush(Stack* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){STDataType* tmp (STDataType*)realloc(ps-data, sizeof(STDataType) * (ps-capacity * 2));if (tmp NULL){perror(realloc);exit(-1);}ps-data tmp;ps-capacity * 2;}ps-data[ps-top] x;ps-top; }//出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top ! 0);ps-top--; }//获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(ps-top 0);return ps-data[ps-top - 1]; }//检查栈是否为空 bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }//销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-data);ps-top 0;ps-capacity 0; }总结 以上就是我对于栈的实现。
http://www.zqtcl.cn/news/645802/

相关文章:

  • 有没有做产品团购的网站2d动画制作软件
  • 成都网站排名生客seo杭州专业网站制作设计
  • 阿里云 企业 网站四平市网站建设
  • 政务门户网站建设信息奇人网站
  • 打开网站弹出广告代码如何建设网站方便后期维护
  • 海淀网站建设龙岩做网站用什么cms 知乎
  • 网站托管费用多少免费一卡二卡三
  • 长沙做网站品牌中信建设官网站首页
  • 网站空白页黑链聊城网站建设代理商
  • 微信上打开连接的网站怎么做在网上可以做宣传的有那些网站
  • 公司在选择网站时应考虑什么问题溧阳 招网站开发
  • 兴宁电子商务网站建设农村电子商务网站建设方案
  • 张北县网站建设网站设计师加油站
  • 网站建设车成本网站开发网络结构图
  • 建设部职称网站宝山网站制作
  • 太仓网站建设哪家好58同城找工作
  • 一键网站制作机关网站建设建议
  • 快站公众号工具台州网站制作系统分析怎么写
  • 品牌网站制作方案如何写推广软文
  • o2o营销seo薪酬如何
  • 网站开发公司 网站空间推广网站制作
  • 鞍山网站制作小程序WordPress网盘下载插件
  • 保山市建设厅官方网站郑州建设信息网站
  • clh网站建设公司h5网站源代码
  • 做装修的网站怎么做好服装市场调网站建设的目的
  • 佛山网站建站电子工程网名又知道你是做工程
  • 桐乡网站二次开发商城购物网站建设
  • 大连微网站制作公司网页多钱
  • 郑州网站托管助企网络营销推广合作
  • 做电商网站用什么软件企业网站建设方案范本