出列功能不输出正确的值

时间:2012-03-01 06:56:04

标签: c++ class linked-list queue

我的队列类中的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();

1 个答案:

答案 0 :(得分:0)

首先查看Deque的实现,然后尝试自己的。如果它的某些语法或语义错误发布了重现代码的最小代码。

此链接可能会对您有所帮助。 Deque Implementation

相关问题