用单循环表表示队列问题 急求解
设长度为 n 的链队列用单循环表表示,若只设头结点或只设尾指针,则分别该怎样进行出队和入队操作?
不好意思,鉴于我是一个没什么基础的初学者,对下面的程序还是有些摸不着头脑,请各位大哥大姐出手帮助解释下
以下是我个人的拙见,望帮忙指出错误
假设队列的尾部是tail,那么队列的头部就是tail->next;
出队列操作:
error_code queue::serve()
{
if(tail==null)return underflow;------尾指针为0则返回"下溢"?
node*old_front=tail->next;------node*old_front 指的是没出队前的头结点吗 那这个赋值语句的意思是?
node*front=old_front->next;------头结点指向第一个元素?
tail->next=front;-----------尾指针指向新的头结点?
delete old_front;-----------删除以前的头结点
return success; ----------我看了半天,怎么没有元素的输出啊?
}
入队列操作:
error_code queue::append(const queue_entry&item)
{
node*new_rear=new node(item);-------给新的尾结点赋值
if(new_rear==null)return overflow;----新的尾指针为0时返回溢出
if(tail==null)tail=new_rear;-------若现下的尾指针指向为空,则将其赋值为新的尾指针
else--------这里的else是想对于 tail==null 来说的吗
{
new_rear->next=tail->next;-------后面的基本上都能确定的拿主意了
tail->next=new_rear;
tail=new_rear;
}
return success;
}