已经下架了,同学
数据结构是抽象概念,不与具体的编程语言挂钩,常见的编程语言各自都能实现的,C++可以,JS当然也行,只不过因为语言本身具有不同的语法和特点,实现起来细节上有区别,但整体思想是相通的
因为博主在插入的时候并没有判断即将插入的位置是否为空(0),而是直接通过m_iHead 来插入。
因此没有必要清楚元素。(你就这样想:反正我插入的时候用不到你,还清楚干嘛
“队列里的那个元素没了”就是出队的意义啊...老师设了一个参数e的意义在于让我们知道程序删除的元素对不对而已,也可以不设置这个e
初始化队列是实例化一个队列类,而创建队列就是使用实例的成员函数进行修改队列。
想要通过用户输入创建队列,可以自己写一个成员函数,实现。
我和你的代码一致,所以排除是MyQueue.cpp文件的问题,据我猜测是demo.cpp文件的问题,
就是已经定义好的东西
例:
#include<iostream>
或
int main()
{
}
或
if(~~~~~~)
{
}
else
{
}
都是已定义好的模板!!!
队列长度函数可以判断队列是否为空。
QueueEmpty()函数为了规范性,有时候项目会要求有判断为空的选项。老师的项目中可以不用写。
试一下用绝对路径
MyQueue *p = new MyQueue(4);
申请内存哇
老师我懂了,我们是用数组定义的循环队列,m_iqueue是数组下标,所以指针要做++操作,而课本上面的循环队列不一定是数组实现的
函数传参没问题,测试代码部分没有?
不是这样不成死循环了嘛
1.用“StructName”替换Customer,结构体如下:
struct StructName
{
float a;
float b;
float c;
};
2.构造函数参数改成(float a=0, float b=0, float c=0)
3.入队、出队时候声明的结构体变量的成员改成三个浮点型
楼主解决了吗,我用的是m_iQueueCapacity
main()函数结束后才能被收回吧,所有在main结束前打印没有问题
原来是自己傻X了,我佛了
“MyQueeue.h”中多了个字母e,跟“Myqueue”后面不一致
链表不能用下标来遍历,队列既能用数组来实现,也能用链表来实现,用链表时就不能这样取下标来遍历,但是可以通过指针来遍历
STL里队列和栈的实现都基于双端队列deque,要比介绍的两种连续空间(可以理解为数组)的实现要复杂一些。deque括多段等长的连续空间和一组指向这些空间的指针,随机访问和首尾增删的效率比较高,同时不会占用大块内存。有兴趣的话可以在百度上搜一下deque的实现方法。
缺省值在Customer类的构造函数的声明中写就可以了。
譬如:
Customer(string name = "",int age = 0);
在.cpp文件中实现Customer构造函数如下:
Customer:Customer(string name,int age){
}
本节插入元素是int类型,只需要关注int 类型的值,所以使用不带&的类型将int的值传入。
出列是为了获取队列中的值,我们调用函数获得调用函数内部的计算结果有三种方式:返回值,指针,引用,本节用的是引用,即&,我们也可以使用指针或者返回值去获取函数内部的结算结果。
4-1视频的2分09秒,我也发现了这个问题,我认为如果真的插满的话,对头队尾指针应该重叠才对
多动手敲敲代码,慢慢就懂了
环形嘛:c1->c2->c3->c4->c1 这样子,理解环形就理解这个。
注意堆中定义的格式以及释放内存的书写方式