软考《软件设计师教程》上讲队列的部分,存在一点疑问。我对队列的理解:在空队列时,front=rear=null,这时两个指针指向最下面的线没有问题,在入队1个元素后,front不变,仍然为null,rear+1,此时应该指向“0”这个存储单元。在图b中,入队3个元素,则rear应该指向“2”这个存储单元,但图B指向的却是“3”。这时怎么回事呢?另外,队列的头指针和尾指针,指针不应该是指向存储单元的吗?图上的指针都指在分隔线上,这个分隔线表示什么意思啊?
1 回答
慕仙森
TA贡献1827条经验 获得超7个赞
意思能明白就行,图就甭深究了。我猜图上想表达的意思,是两个指针都存储数组下标,用指向分割线来代表-1,所以在图b中三个元素入队的情况下,Q.front画在了分割线上,表示队列头依然在原始位置,而Q.rear直接指向的是下一空单元。最后队满时,Q.rear也是指向了分割线的,表示(顺序)队列里已经没有新的剩余空间了,所以同样也是-1。
由1,我觉得看你怎么对两个指针定义了,如果队首指针指向的是首元素、队尾指针指向的是尾元素,那么1个数据元素入队以后,它们应该都指向下标为0的存储单元才对;而如果想让队首指向null代表原始状态,队尾指向尾元素,那就是按你那种算法跑。这个依赖于你的实际定义,算法不一样没关系,只要跑的过测试也没bug就好了。
添加回答
举报
0/150
提交
取消