运行时错误项目

时间:2017-10-13 13:15:55

标签: c pointers data-structures

我创建了一个以水平顺序无递归方式打印BTree的函数。

我有一个问题就是找到我的错误..出现以下问题。

运行时检查失败#2 - 围绕变量' pq'被腐败了。  如果有人知道问题出在哪里,或者下次我怎么能找到它? 如果需要,我添加完整的项目。 enter link description here

void PrintTreeLevelOrder(bstree tree){      //The problem some where here.....
    queue *pq = (queue*)malloc(sizeof(queue)); // is struct of : *front, *rear

    node *current;// is struct of : root
     create_queue(&pq);//create queue- items_num = 0,front = NULL,rear = NULL

     if (tree.root == NULL) {
         printf("Your Tree Is Empty:\n");
         return;
     }
    current = tree.root;
    enqueue(current, &pq); 
    printf("Your Tree Displayed As Queue:\n");
    while ((size_of_queue(&pq) )!=0) {
        current = pq->front;
        printf("%d ", current->data);
        if (current->left != NULL) 
            enqueue(current->left, &pq);

        if (current->right) 
            enqueue(current->right, &pq);
            dequeue(&pq, &current);

    }

}

1 个答案:

答案 0 :(得分:0)

首先,我想说你的算法是正确的,请阅读以下内容。

您的代码有多处错误需要处理

  • 你以错误的方式使用了pq函数,你传递了一个指向指针而不是原始指针的指针,所以你覆盖了代码
  • Create_queue应该分配,除非你将其称为init但这不是主要问题
  • 您应该检查create_queue是否成功
  • 您正在将队列中的地址保存为队列*为int,这是错误的,对于不同于32位的体系结构而言不可移植
  • 您正在为当前节点(节点树结构)分配一个queue_element元素指针结构,这也是不正确的,因为它们是不同的类型和体系结构

请关注这些要点,如果您想了解更多详情,请与我联系 我很乐意帮助