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

网站后台主流网站开发语言上海网站建设红旗

网站后台主流网站开发语言,上海网站建设红旗,哪里网站建设联系,wordpress安装说明目录 ​编辑 栈#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.w-s-a.com/news/193064/

相关文章:

  • 江苏城乡与住房建设厅网站wordpress 添加导航
  • 免费单页网站在线制作网站制作与网站建设pdf
  • 网站开发使用云数据库技术教程大连模板开发建站
  • 佘山网站建设创造网站需要多少钱
  • 南海佛山网站建设网站维护需要什么技能
  • 阿里云服务器开源做几个网站想找公司做网站
  • 一般做网站是用什么语言开发的域名查询 查询网
  • 地方门户网站源码下载揭阳专业网站建设
  • 网站做优化好还是推广好wordpress百家号模版
  • 淘宝网网站建设的的意见校园微网站建设
  • 小说网站建设之前需求分析免费下载京东购物
  • 园林景观设计案例网站wordpress 文章内容页
  • 网站什么做才会更吸引客户楚雄网站开发rewlkj
  • 电商网站构建预算方案视频制作网站怎么做
  • 包装设计灵感网站ps软件下载电脑版多少钱
  • 手机网站图片做多大原网站开发新功能
  • 网站设计培训成都陕西网站建设公司哪有
  • expedia电子商务网站建设辽宁网站设计
  • 深圳网站建设网站运营绥芬河市建设局网站
  • 家政服务网站做推广有效果吗做图软件ps下载网站有哪些
  • 北京市建设教育协会网站flash网站制作单选框和复选框ui组件
  • 国外有没有做问卷调查的网站网站网页怎么做
  • 简单个人网站模板下载网站建设整体情况介绍
  • 网站建设做到哪些内容荆门网站建设电话咨询
  • 玉树网站建设公司双11主机 wordpress 2015
  • dw做网站背景图片设置汕头seo管理
  • 个人又什么办法做企业网站唐山哪里建轻轨和地铁
  • 手机网站404页面室内设计公司排名前100
  • 做民宿需要和多家网站合作吗创建软件的步骤
  • 网站导航栏设计要求辽宁省住房和城乡建设厅