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

路桥网站制作北京到广州

路桥网站制作,北京到广州,网站营销费用,网站是如何做的好1.前言 大家好久不见#xff0c;这段时间由于忙去了。就没有即使维护我的博客#xff0c;先给大家赔个不是。 我们还是规矩不乱#xff0c;先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分#xff1a;栈和队列。它在今后的学习中也会再次出现#xff08;c#…1.前言 大家好久不见这段时间由于忙去了。就没有即使维护我的博客先给大家赔个不是。 我们还是规矩不乱先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分栈和队列。它在今后的学习中也会再次出现c话不多说直接进入正题 2.栈 2.1栈的概念和结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 2.2栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 // 下面是定长的静态栈的结构实际中一般不实用所以我们主要实现下面的支持动态增长的栈 typedef int STDataType; #define N 10 typedef struct Stack { STDataType _a[N]; int _top; // 栈顶 }Stack; // 支持动态增长的栈 typedef int STDataType; typedef struct Stack { STDataType* _a; int _top; // 栈顶 int _capacity; // 容量 }Stack; // 初始化栈 void StackInit(Stack* ps); // 入栈 void StackPush(Stack* ps, STDataType data); // 出栈 void StackPop(Stack* ps); // 获取栈顶元素 STDataType StackTop(Stack* ps); // 获取栈中有效元素个数 int StackSize(Stack* ps); // 检测栈是否为空如果为空返回非零结果如果不为空返回0 int StackEmpty(Stack* ps); // 销毁栈 void StackDestroy(Stack* ps);接下来是各个函数的实现过程 #includestack.hint STSize(ST* pst) {assert(pst);return pst-top;//? }void STInit(ST* pst) {assert(pst);pst-a NULL;//pst-top -1;//与栈顶元素精准对齐(先再放数据;若指向栈顶元素的下一个位置 --- top 0(不合理)pst-top 0;//指向栈顶数据的下一个位置pst-capacity 0; } void STPush(ST* pst, STDataType x) {if (pst-top pst-capacity){int newcapacity pst-capacity 0 ? 4 : pst-capacity * 2;//capacity0 --- 直接赋为4不是0就二倍STDataType* tmp realloc(pst-a, newcapacity * sizeof(STDataType));if (tmp NULL){perror(realloc fail);return;}pst-a tmp;pst-capacity newcapacity;}pst-a[pst-top] x;//把x放到栈顶pst-top; }bool STEmpty(ST* pst) {assert(pst);if (pst-top 0){return true;}else{return false; } }void STPop(ST* pst) {assert(pst);assert(!STEmpty(pst));pst-top--; } void STDestroy(ST* pst) {assert(pst);free(pst-a);pst-a NULL;pst-top 0;pst-capacity 0; } STDataType STTop(ST* pst) {assert(pst);assert(!STEmpty(pst));return pst-a[pst-top - 1]; } 3.队列 3.1队列的概念和结构 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头。 3.2队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 // 链式结构表示队列 typedef struct QListNode { struct QListNode* _pNext; QDataType _data; }QNode; // 队列的结构 typedef struct Queue { QNode* _front; QNode* _rear; }Queue; // 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QDataType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QDataType QueueFront(Queue* q); // 获取队列队尾元素 QDataType QueueBack(Queue* q); // 获取队列中有效元素个数 int QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 int QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q); 具体函数实现如下 #includequeue.hbool QueueEmpty(Queue* pq) {assert(pq);return pq-size 0;//return pq-phead NULL pq-ptail NULL; }void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; } void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq;QNode* next NULL;while (cur next){next cur-next;free(cur);cur next;}pq-phead NULL;pq-ptail NULL;pq-size 0; } void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);return;}newnode-data x;newnode-next NULL;if (pq-phead NULL){assert(pq-ptail NULL);pq-phead pq-ptail newnode;}else{pq-ptail-next newnode;pq-ptail newnode;}pq-size; } void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));//1个结点//多个节点if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}else{//头删QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--; } QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-phead-data; } QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-ptail-data; } int QueueSize(Queue* pq) {assert(pq);return pq-size; } 4.小结 以上就是栈和队列的基础知识点还需要多刷题来巩固基础知识各位有什么不懂的尽管在评论区留言博主一定尽全力来给大家解答谢谢大家我们下篇见~
http://www.dnsts.com.cn/news/208915.html

相关文章:

  • 青岛网站推广哪家便宜WordPress托管如果使用插件
  • 响站怎么建设网站电子商务网站建设策划书范文
  • 手机网站制作公司铁路建设单位网站
  • 南阳南阳新区网站建设重庆市建设工程信息网打不开是怎么回事
  • 商贸行业网站建设网站的系统建设方式
  • 烟台房产网站建设游戏网站开发协议
  • 网站开发经理招聘小学全部课程免费教学软件
  • 建网站用html网站建设遇到哪些问题
  • 网站开发的相关技能如何申请开通网站
  • 北京网站建设 知乎最新新闻热点话题
  • 网站维护提示怎么做品牌策划包括哪些内容
  • 网站建设要哪些人做网站必需要在工商局备案吗
  • 枣阳城乡建设局网站欧盟理事会
  • 建立自己的网站怎么样做wordpress免插件跳转
  • 河北网站开发联系电话互动型网站成功例子
  • 网站做多个页面网站的设计风格与特点
  • 医疗网站前置审批wordpress移动顶部菜单
  • 做美妆网站的关键词商城县
  • 天津黑曼巴网站建设宿迁司法拍卖房产网
  • 白酒网站模板wordpress 教程类主题
  • 周杰伦做的广告网站网站备案的要求是什么样的
  • 旅游网站建设品牌推广的方式有哪些
  • 音乐分享网站开发html5网站建设中模板
  • seo工具助力集群式网站升级杭州做网站价格
  • 网站建设平台ui确认书重庆门户网站推广方案
  • 网站建设简单流程网站建设图片怎么切
  • 接项目做的网站WordPress外链自动转内链
  • 企业网站排名优化哪家好6做网站
  • 做网站难不难网站开发人员的职业要求
  • 奉化网站建设报价网站上传的图片怎么做的清晰度