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

南充网站建设狐灵网络做抢单软件的网站

南充网站建设狐灵网络,做抢单软件的网站,郑州直播app开发,用旧电脑做网站目录 ​编辑 栈#xff1a; 栈的概念及结构#xff1a; 栈的实现#xff1a; 队列#xff1a; 队列的概念及结构#xff1a; 队列的实现#xff1a; 扩展知识#xff1a; 以上就是个人学习线性表的个人见解和学习的解析#xff0c;欢迎各位大佬在评论区探讨#… 目录 ​编辑 栈 栈的概念及结构 栈的实现 队列 队列的概念及结构 队列的实现 扩展知识 以上就是个人学习线性表的个人见解和学习的解析欢迎各位大佬在评论区探讨 感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连 栈 栈的概念及结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。一般用在1.公平性排队(抽号机);2.BFS(广度优先遍历)。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。链的尾插需要调动更多的数据过程中有更多的消耗。 // 支持动态增长的栈 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 ); //初始化栈 //初始化 void SLInit(SL* ps) {assert(ps);ps-a NULL;ps-capacity ps-top 0; } //入栈 //入栈 void SLPush(SL* ps, STDataType x) {assert(ps);//栈顶容量说明需要扩容if (ps-capacity ps-top){int newcapacity ps-capacity 0 ? 4 : 2 * ps-capacity;STDataType* tmp (STDataType*)realloc(ps-a,sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-capacity newcapacity;ps-a tmp;}ps-a[ps-top] x;//后缀方便下一次入栈和打印栈顶ps-top; } //出栈 //出栈 void SLPop(SL* ps) {assert(ps);//为空情况“0”assert(ps-top 0);//--ps-top; } //获得栈顶元素 //获得栈顶元素 STDataType SLTTop(SL* ps) {assert(ps);//为空情况“0”assert(ps-top 0);int n (ps-top) - 1;return ps-a[n]; } //获取栈中有效元素个数 //获取栈中有效元素个数 int SLSize(SL* ps) {assert(ps);return ps-top; }//销毁栈 //销毁栈 void SLDestroy(SL* ps) {assert(ps);//开辟数组优势一次全部释放free(ps-a);ps-a NULL;ps-capacity ps-top 0; } // 检测栈是否为空如果为空返回非零结果如果不为空返回0 // 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool SLEmpty(SL* ps) {assert(ps);//为“0”说明为NULLif (ps-top 0){return true;}return false; } 队列 队列的概念及结构 队列 只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有 先进先出 FIFO(First In First Out) 。 入队列进行插入操作的一端称为队尾  出队列进行删除操作的一端称为队头。 队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数 组头上出数据效率会比较低。 // 链式结构表示队列 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 ); //初始化 //初始化 void QueueInit(Que* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; } //入列 //入列 void QueuePush(Que* pq, Qdatatype x) {assert(pq);//开辟队列结构动态内存Qnode* newnode (Qnode*)malloc(sizeof(Qnode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data x;newnode-next NULL;//第一次或N1次if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; } //出列 //出列 void QueuePop(Que* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){//就剩下一个free(pq-head);pq-head pq-tail NULL;}else{//剩下两个及以上Que * del pq-head;pq-head pq-head-next;free(del);}pq-size--; } // 获取队列头部元素  // 获取队列头部元素 Qdatatype QueueFront(Que* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; } // 获取队列队尾元素  // 获取队列队尾元素 Qdatatype QueueBack(Que* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; } // 获取队列中有效元素个数  // 获取队列中有效元素个数 int QueueSize(Que* pq) {assert(pq);return pq-size; }// 检测队列是否为空如果为空返回非零结果如果非空返回0  // 检测队列是否为空如果为空返回非零结果如果非空返回0 int QueueEmpty(Que* pq) {assert(pq);return pq-head NULL; } //销毁 //销毁 void QueueDestroy(Que* pq) {assert(pq);while (pq-head){Que* del pq-head-next;free(pq-head);pq-head del;pq-size--;}pq-head pq-tail NULL; } 扩展知识 队列适合使用链表实现使用顺序结构(即固定的连续空间)实现时会出现假溢出的问题因此大佬们设计出了循环队列循环队列就是为了解决顺序结构实现队列假溢出问题的 循环队列实际中我们有时还会使用一种队列叫循环队列。如操作系统课程讲解生产者消费者模型时可以就会使用循环队列。环形队列可以使用数组实现也可以使用循环链表实现。 同时指向一个位置为空rear(尾)的下一个位置为front(头)时说明已经填满此处是多开辟了一个空间来做判断是否为满  以上就是个人学习线性表的个人见解和学习的解析欢迎各位大佬在评论区探讨 感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连
http://www.sczhlp.com/news/247690/

相关文章:

  • 免费的舆情网站不需下载做网站的公司名称
  • 网站怎么做防御学校网站建设和维护情况
  • 阿里云linux服务器搭建多个网站如何进行企业营销型网站建设规划
  • html网站建设方案天津建设银行招聘网站
  • 江西省建设监理网站网站制作软件平台
  • 湖北省建设厅官方网站wordpress论坛整合插件
  • 阿里云登录入口seo在线短视频发布页运营
  • 沈阳网站制作全网性wordpress 破解账号
  • 学做粤菜的网站北京微信网站开发报价
  • 南昌网站建设哪家好网站邮箱后台子域名
  • 网站建设设计制作方案与价格上海网站优化公司排名
  • 有经验的企业做网站广告行业包括网站建设吗
  • 电商网站开发技术与维护如何做线上营销
  • 微信小说网站开发企业网站建设方案价位
  • 末年人免费观看网站dw网站建设模板
  • 亦庄做网站东昌网站建设公司
  • 企业为什么要建设电子商务网站广东省建设厅网站6
  • 做旅游网站平台ppt做网站策划需要什么技能
  • 足球网站模板名词解释seo
  • 杭州绿城乐居建设管理有限公司网站设计公司网站时什么是重要的
  • 江西营销型网站建设小公司建设网站
  • 大故障,阿里云核心域名疑似被劫持 - 教程 (转载)
  • 学习笔记:乘法逆元
  • 2025年北京保洁服务公司推荐:海獭顾家保洁服务公司深度测评
  • 学术会议合集 | 机器人、大数据、社会科学、医学人工智能等EI会议合集
  • 基于块匹配的MATLAB视频去抖动算法
  • 深圳市建设工程质量监督总站网站成都旅游公司哪家好
  • 克隆网站怎么做成都设计网站的公司名称
  • 番禺建设工程交易中心网站利用论坛推广网站
  • 专做负面的网站哪里可以免费发广告