C++队列问题

只设尾结点的循环队列完成基本功能出队和清空队有问题出队后再历遍的话会一下出去俩元素清空队则直接出错求解答和修改structNode{intdata;Node*next;}... 只设尾结点的循环队列完成基本功能 出队和清空队有问题 出队后再历遍的话 会一下出去俩元素 清空队则直接出错 求解答和修改
struct Node
{int data;
Node*next;
};
class LinkQueue
{
private:
Node*rear;
public:
LinkQueue()
{
rear=new Node;
rear->next=rear;
}
void ENQueue(int x)
{Node*s;
s=new Node;
s->data=x;
s->next=rear->next;
rear->next=s;
rear=s;
}

int DeQueue()
{int k;
Node*p;
if(rear->next==rear)
cout<<"队空,无法出队";
else
p=rear->next->next;
k=p->data;
rear->next=rear->next->next->next;
delete p;
return k;
}
void ClearQueue()
{
Node*p;
p=rear->next->next;
while(rear->next!=rear)
{rear->next->next=p->next;
delete p;
p=rear->next->next;
}
}

void QueueTranverse()
{
Node*p;
p=rear->next->next;
while(p!=rear->next)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
}
};
出队已经解决,现在就剩清队了,求解答
展开
 我来答
青衣风雨
2013-11-02 · TA获得超过419个赞
知道小有建树答主
回答量:244
采纳率:80%
帮助的人:136万
展开全部
这队列写的。。。你判断的是rear->next,怎么会去删除rear->next->next。如果链表只有两个节点(包括rear共两个),那么rear->next->next就是rear自己了
追问
把完整的Clear函数写下来好吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式