bool Queue::enqueue(const Item & item)
{
if (isfull())
return false;
Node * add = new Node;
add->item = item;
add->next = NULL;
items++;
if (front == NULL)
front = add;
else
rear->next = add;
rear = add;
return true;
}
这个在链表中添加元素的函数连续看了几天都没理解(不夸张),理解的以后发现其实很简单,是自己的理解跑偏了……故在此记录一下如何理解C++ Primer Plus的链表,尤其是这个enqueue()函数。
Queue line(10);
创建了一个最多可以包含10个元素的链表,此时链表中一个元素都没有,并且由于构造函数,front = rear = NULL。
当第一次调用enqueue()函数时,Node* add = new Node创建了一个指向Node结构的指针。
比如此时add的地址是4000,然后front = rear = add = 4000。
4000存储了什么呢?第一个item和一个NULL指针。
第二次调用enqueue()函数时,Node* add = new Node又创建了一个指向Node结构的指针。
比如此时add的地址是420