基础数据结构——栈和队列
该篇内容来自作者观看b站青岛大学王卓老师的数据结构与算法基础课的个人笔记https://space.bilibili.com/40323036?spm_id_from333.788.b_765f7570696e666f.2栈和队列特点栈具有“先进后出”,”后进先出”的特性队列具有“先进先出” “后进后出”的特性只能限定在表的“端点”进行操作的线性表栈的定义和特点栈 是 仅在表尾进行插入和删除的线性表表尾称作栈顶表头称作栈尾插入到栈顶称为入栈 压入 Push从栈顶删除最后一个元素称为出栈 弹出 Pop栈和一般线性表的不同仅在于运算规则不同队列的定义和特点队列 是 在一端插入在另一端删除的线性表具有”先进先出“的特点插入的操作称为”入队”删除的操作称为“出队”队列的相关概念栈的表示和实现栈是一种线性表所以有顺序存储和链式存储即顺序栈和链栈顺序栈的表示和实现创建栈top指针表示栈顶的上一位base指针表示栈底stacksize表示栈可使用的最大容量顺序栈的建立判断是否为空栈看topbase栈满看top-basestacsize当栈已经满了仍插入元素导致溢出称为上溢当栈已经空了仍删除元素导致溢出称为下溢初始化栈入栈和出栈入栈1.将元素存入栈顶2.栈顶指针后移一位出栈1.栈顶指针前移一位2.取出栈顶元素栈的其他操作链栈的表示和实现创建这里指针的方向与一般的链表方向相反后入栈的元素指向先入栈的元素方便操作入栈和出栈入栈1.生成新结点2.将新结点数据域置e3.新结点插入栈顶4.修改栈顶指针出栈1.将栈顶数据置e2.临时保存栈顶结点3.修改栈顶指针4.释放临时指针即原栈顶取栈顶元素队列的表示和实现顺序队的表示和实现初始化队头队尾指针指向0队空和队满的判断方法队空出队时队头指针不断后移最终两指针会相遇q.frontq.rear;队满因为队满和队空一般情况下队尾指针都会和队头指针相遇所以需要用别的表示方式表示队满情况。1.另外设计一个变量表示队列元素个数2.少用一个元素空间(rear1)%MAXQSIZEfront;预留一个空间这时候如果执行入队操作先进行(rear1)%MAXQSIZEfront;就能够得到队满的情况如果执行出队操作front指针后移取模不为0队不满入队在执行过程如果队列已经满了队头的元素出队后后面无法继续入队而此时的队列却不为满这将造成内存浪费称为“假溢出”假溢出解决办法循环队列利用模运算当队尾指针1对队列长度取模为0时即队尾指针指向最大长度赋值为0即可让尾指针回到队头出队循环取模队头到最大长度下标可以自动归0取队头元素在初始化时base指向new出来的数组空间的首地址可以当成数组用注数组名本质就是一个不能改变的指针指针本质就是一个能改变的数组名。销毁队列链队的表示和实现指针变化情况创建front指针为头结点初始化入队和出队销毁链队取头结点元素
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2559020.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!