实在看不懂了,C++primer plus 12章队列模拟

IT保安 IT保安 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

class Queue
{
private:
struct Node{Item item;struct Node * next;};
enum {Q_SIZE = 10};
Node * front; //前一个数据
Node * rear; //后一个数据
int items; //当前数据的数量
const int qsize; //最大的数量
public:
Queue(int qs):qsize(qs),front(NULL),rear(NULL),items(0)
{
//front = NULL;
//rear = NULL;
//items = 0;
}
~Queue();
bool isempty()const;
bool isfull()const;
int queuecount()const;
bool enqueue(const Item & item);//增至队尾
bool dequeue(Item & item);//队首删除
};

bool enqueue(const Item & item)
{
//满的就退出
if(this->isfull())
{
return false;
}
//空的队列就增加
Node *add = new Node;
if(add == NULL)
return false;//未申请到内存也退出
add->item = item; //add的item就是形参
add->next = NULL;//add结构的next成员指针设为null
items++;
if(front == NULL) //如果队列是空
front = add; //add就为第一个
else
rear->next = add; //否则,就将当前对象的rear指针指向add,
rear = add;
return true;

}


这个bool函数看不懂了,rear = add到底什么意思啊?上面已经rear->next = add了,让rear的next指针指向add,因此add变成最后一个节点,再用rear = add,不就又重复操作,且将rear->next = add 刚赋的值给覆盖了吗?

期待帮助,尽肯能通俗详细的教教我,谢了!
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
IT保安
C++ 语言 65,214 成员 250,514 内容