【发布时间】:2017-09-29 23:39:24
【问题描述】:
在我的家庭作业中,我被要求在 C++ 中实现一个可扩展队列。我们得到了一个无法更改的头文件。头文件有一个动态数组,_front,_size(当前队列中的元素个数)和_capacity。
如果我们尝试将“超出范围”或大于容量的元素推送到队列中,则会要求我们创建一个新队列,其容量是旧队列的两倍。我应该如何在没有指向 next 或 _rear 变量的情况下实现出队和入队?
任何形式的提示都会有所帮助,而不是寻找完整的解决方案。
【问题讨论】:
-
好吧,如果你有一个数组和一个大小/容量,那么是什么阻止你使用
arr + sz - 1获取指向最后一项的指针或arr + 1获取下一项的指针? -
@scohe001 你能解释一下吗?
-
你确实有一个
_rear变量 - 它是_size。 -
当您需要扩展时,分配一个两倍于您容量的缓冲区,将旧数组中的项目复制过来,交换指针,然后删除旧的较小缓冲区。
-
尽管看起来很诱人,但不要使用
realloc。如果你对物体进行操作,它可能会以一些奇怪而有趣的方式咬你。