front 和 tail 语义是否发生变化?

来源:1-1 为什么要学习数据结构

qq_羽化登仙_jmvwBD

2022-02-10 15:09:43

老师,这个size确实很好改,但是改完之后这个front 和 tail 的语义应该是变了吧。我暂时还是想不明白这个地方,请老师指教!

写回答

1回答

liuyubobobo

2022-02-10

请你具体指出是哪一段代码里,你觉得哪个变量的语义变成了什么?或者你认为在什么测试用例下,应该取值是多少?但实际却是多少?所以你觉得变了?

0
hiuyubobobo
回复
hq_羽化登仙_jmvwBD
hp>首先,是的,size == 0 和 front == tail 二者表达的是一个意思。表达一个意思是指:在 size == 0 的时候,一定有 front == tail,同时,front == tail 的时候,一定有 size == 0。也正因为如此,在有 size 的时候,可以不浪费这一个空间,如果浪费这一个空间,我们在类中可以不设置 size 这个变量。这一点,在这一章后续,我留了一个作业,有兴趣可以先看一下。


作业视频:https://class.imooc.com/lesson/1579#mid=36123 

关于不浪费一个空间的循环队列:https://class.imooc.com/lesson/1579#mid=36124

关于不设置 size 的循环队列:https://class.imooc.com/lesson/1579#mid=36125


但是,在整个逻辑过程中,这三个变量的语义是一直保持着的。即:size 表示队列中有多少元素。front 表示堆首元素的位置,tail 表示最后一个元素的后一个位置。(基于数组长度取模)如果 front == tail,说明队列的第一个元素的位置和队列最后一个元素的下一个位置在一起,这是不可能的,说明整个队列是空的。


我不确定你截图中的错误是怎样出现的,但是课程的官方代码应该不会出错误。请使用课程官方代码实验你正在试验的测试用例。课程官方代码传送门:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures?utm_source=material


如果使用课程官方代码也有这个错误,请告诉我你的具体测试用例是什么。


继续加油!:)

h022-02-10
共3条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2603 学习 · 1086 问题

查看课程

相似问题

回答 1

回答 1

回答 1