在学习时困扰了挺久的单链表实现队列时
入队问题的理解
在此记录一下:
bool Queue::enqueue(const Item & item)
{
if(if.full())
return false;
Node * add = new Node; //创建新节点并分配内存
add->item = item; //将数据存放在新节点的数据域
add->next = NULL; //指针域指向空
items++; //数据项++
if(front==NULL) //首指针指向首节点
front = add;
else
rear->next = add; //旧节点的指针域更新,即指向新节点
/*
**Q:这里front->next如何更新?
**A:只有一个节点的时候,front和rear指向的是同一个节点,
** 所以rear->next = add;此时相当于front->next = add;
** 即front节点与后面的链连接起来了!
*/
rear = add; //尾指针指向新节点
return true;
}