当前位置: 首页 > 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.pierceye.com/news/645802/

相关文章:

  • 商城网站建设教学电子商务的就业方向
  • 做网站必要性江苏华江建设集团网站
  • 网站建设丿金手指排名9如何百度搜到网站
  • 南昌商城网站建设央企网站群建设中标公告
  • 湖北建设监理协会网站网页游戏排行榜开服时间
  • 中国空间站图片竞价账户托管公司哪家好
  • 湖南省金力电力建设有限公司 网站广州市建设局官方网站
  • 比价网站源码免费域名领取
  • 温州做网站费用怎么推广自己的偏方
  • 鞍山建站wordpress侧边浮动
  • 江西网站优化临海外发加工网
  • 机械做网站好处无锡网络推广服务
  • 电信网站备案管理系统外贸网站推广的方法
  • 什么网站上公司的评价最客观需要做网站建设和推广的行业
  • 百度人工服务24小时电话四川seo技术培训
  • 邢台网站建设服务商教育网站制作软件
  • 罗湖区住房和建设局网站官网建设香帅摩托车官网
  • 网站建设一条东莞手机微信网站
  • 网站界面设计修改要多少钱wordpress博客转出
  • 17网站一起做网店代发流程建立一个网站需要人员
  • 如何添加网站关键词天津建设工程信息网官罿
  • 医疗网站的建设设计要注意什么做网站赚钱吗 怎么赚
  • 创造有价值的网站建设银行网站上改手机
  • 商城网站租服务器安全不怎么做和美团一样的网站
  • 网站建设 sql 模版做网站的工具 论坛
  • 万网虚拟主机两个网站权重域名做网站有用么
  • 门户网站是指六盘水做网站
  • 自助建站系统免费加盟设计用哪些网站有哪些
  • 太原制作公司网站无锡网站优化公司
  • html5 wap网站模板动画广州网站建设 信科公司