用单循环表表示队列问题 急求解
设长度为 n 的链队列用单循环表表示,若只设头结点或只设尾指针,则分别该怎样进行出队和入队操作?
如果只是设一个指针的话,你要把这个队列想象成一个圆环行,假设队列的尾部是tail,那么队列的头部就是tail->next;
出队列操作:
error_code queue::serve()
{
if(tail==null)return underflow;
node*old_front=tail->next;
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;
if(tail==null)tail=new_rear;
else
{
new_rear->next=tail->nest;
tail->next=new_rear;
tail=new_rear;
}
return success;
}