出列函数未输出正确的值

Dequeue function not outputting proper values

本文关键字:输出 函数 未输      更新时间:2023-10-16

我的队列类中的dequeue函数似乎有问题。我的dequeue函数是position类的一部分,它没有返回已排入列表的正确值。

已经入队的值是哪个是位置对象,分别是2,1和-1,但当我将该对象出队时,我得到2506216和-1;当我将*pos ponter分配给一个对象时,我只剩下默认值;入队函数似乎工作正常,因为当我检查ptr值时,它们是正确的。

//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=初始;

        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();

只需先查看Deque的实现,然后尝试自己的实现。如果它有一些语法或语义错误,则发布复制代码的最小代码。

这个链接可能会对你有所帮助。Deque实现