注册 登录
编程论坛 数据结构与算法

用队列层次遍历二叉树中的问题

翔云 发布于 2011-06-11 20:48, 529 次点击
void EnQueue(Linkqueue*Q,Bitree*sh)                //插入元素sh为新队尾元素
{
    QNode *p;
    p=(QNode*)malloc(sizeof(QNode));
    if(!p) exit(OVERFLOW);
    p->data=sh;
    p->next=NULL;
    Q->rear->next=p;
    Q->rear=p;
}
Bitree*DeQueue(Linkqueue*Q)                        //删除队头元素,用sh返回其值
{
    Bitree*sh;
    QNode *p;
    if(Q->front==Q->rear)
        exit(OVERFLOW);
    p=Q->front->next;
    sh=p->data;
    Q->front->next=p->next;
    if(sh->lchild)
        EnQueue(&Q,sh->lchild);   <- 这句语句编译时系统提示错误
    return sh;
}
error C2664: 'EnQueue' : cannot convert parameter 1 from 'Linkqueue ** ' to 'Linkqueue *'
为什么呢,要怎么改?
3 回复
#2
weiqiang2011-06-11 22:02
我刚学数据结构,不太懂哦共同学习
#3
灿烂烟火2011-06-13 21:51
错误在于指针引用错误。应将函数EnQueue的首部改为void EnQueue(Linkqueue *&Q,Bitree *sh),调用部分EnQueue(&Q,sh->lchild);改为EnQueue(Q,sh->lchild);建议多看一下教材或多查一些资料,加深对引用的理解。
#4
博士无双2011-09-08 10:48
EnQueue(&Q,sh->lchild);   <- 这句语句编译时系统提示错误
EnQueue(Q,sh->lchild);
1