我的队列类中的dequeue
函数似乎存在问题。我的dequeue
函数是位置类的一部分,它不会返回已排入列表的正确值。
已排队的值是位置对象,是2,1和-1,但是当我将该对象出列时,我得到2,506216和-1;当我将*pos
ponter分配给一个对象时,我保留了默认值;当我检查它们正确的ptr
值时,enqueue函数似乎正常工作。
//position constructor
front = back = &header;
struct Posnode
{
Position *pos;
Posnode *next;
};
class Position
private:
Posnode *front,*back,header;
void Position::dequeue(Position&p)
{
Posnode *ptr=front->next;
front->next = ptr->next;
p = *ptr->pos;
p.geta();//checking for values but am left with the default
if (back == ptr)
{
back = front;
}
delete ptr;
}
v
oid Position::enqueue(Position n) //assigning Position object to end of queue
{
Posnode *ptr = new Posnode;
ptr-> pos = &n;
back->next = ptr;
back = ptr;
return;
}
位置复制,初始(5); copy = intial;
if (copy.ismovelegal(posmoves, r))
{
copy.makemove(posmoves, r);
if (intial.solved(copy))
{
cin.get();
}
else
{
p.enqueue(copy);
}
}
copy.free();//clearing object private memebers
}
intial.free();
p.dequeue(o);//copy that was previous enqued is not enqued
o.geta();
答案 0 :(得分:0)
首先查看Deque的实现,然后尝试自己的。如果它的某些语法或语义错误发布了重现代码的最小代码。
此链接可能会对您有所帮助。 Deque Implementation