gpt4 book ai didi

c++ - 程序编译但未运行c++

转载 作者:行者123 更新时间:2023-12-02 10:33:22 24 4
gpt4 key购买 nike

这不是家庭作业
我正在使用队列对二进制树进行编码,但是该程序无法进行编译,但无法打印任何内容

  • 我尝试清除cin缓冲区,但问题仍然存在
  • 我使用vscode和sublime文本来运行代码
  • 我正在使用cpp14
  • 制作
  • exe文件
    -其他程序正常运行

  • 队列代码
    #include<bits/stdc++.h>
    using namespace std;

    class treeNode{
    public:
    treeNode *lchild;
    int data;
    treeNode *rchild;
    };

    class circularQueue{

    int f;//front
    int r;//rear
    int s;//back
    treeNode **Q;
    public:
    circularQueue(int size){
    this->f=0;
    this->r=0;
    this->s = size;
    *Q = new treeNode;
    }

    void enqueue(treeNode *val);
    treeNode* deque();
    int isEmpty();
    };

    void circularQueue :: enqueue(treeNode *val){

    if((r+1)%s == f){
    cout<<"Queue is full\n";
    }
    else{
    r = (r+1) % s;
    Q[r] = val;
    }

    }

    treeNode* circularQueue :: deque(){

    treeNode *x = NULL;

    if(f == r){
    cout<<"Queue is empty\n";
    }
    else{
    f = (f+1)%s;
    x = Q[f];
    }
    return x;
    }

    int circularQueue::isEmpty(){
    return f==r;
    }


    树创建代码
    #include<bits/stdc++.h>
    #include "queue.h"
    using namespace std;

    treeNode *root = NULL;
    void create(){
    treeNode *p,*t;
    int x;
    circularQueue q(100);
    std::cin.ignore(INT_MAX);
    cout<<"enter root value\n";
    cin>>x;

    root->data = x;
    root->lchild=root->rchild = NULL;

    q.enqueue(root);

    while(!q.isEmpty()){
    p = q.deque();
    cout<<"enter value of lchild"<<p->data<<endl;
    cin>>x;
    if(x!=-1){
    t = new treeNode();
    t->data = x;
    t->lchild->rchild = NULL;
    p->lchild = t;
    q.enqueue(t);
    }

    }
    cout<<"enter value of rchild"<<p->data<<endl;
    cin>>x;
    if(x!=-1){
    t = new treeNode();
    t->data = x;
    t->rchild->rchild = NULL;
    p->lchild = t;
    q.enqueue(t);
    }

    }

    void preorder(treeNode *p){
    if(p){
    cout<<p->data<<" ";
    preorder(p->lchild);
    preorder(p->rchild);
    }

    }
    int main(){

    create();
    preorder(root);

    }

    最佳答案

    在这条线

    *Q = new treeNode;

    您正在取消引用未初始化的指针( undefined 的行为)。我想知道为什么要使用指向指针的指针?似乎不必要。

    如果 undefined 的行为没有导致崩溃,则您的程序似乎将在此处停止:
    std::cin.ignore(INT_MAX);

    您实际上正在等待STDIN结束。

    希望这可以帮助!

    关于c++ - 程序编译但未运行c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61422567/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com