Shepard_tju 2018-11-29 11:03 采纳率: 100%
浏览 2684
已采纳

C++实现链式队列,在Xcode中遇到Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)

代码是链式队列的构建,编译过程没问题,但是运行时提示Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)。请问是什么原因造成的??这个问题已经困扰我很多次了
图片说明

 #include <iostream>
using namespace std;

class qnode{
public:
    int data;
    qnode *link;
};

class linkquene{
public:
    void QInit(linkquene &Q);
    void QInsert(linkquene &Q, int a);
    void QDelete(linkquene &Q);
    int isempty(linkquene &Q);
    void Qshow(linkquene &Q);
private:
    qnode *rear;
    qnode *front;
};
void linkquene::QInit(linkquene &Q)
{
    qnode *p = new qnode;
    p->link = NULL;
    Q.front = p;
    Q.rear = p;
}
int linkquene::isempty(linkquene &Q)
{
    if(Q.rear == Q.front){
        return 1;
    }
    else return 0;
}
void linkquene::QInsert(linkquene &Q, int a)
{
    qnode *n = new qnode;
    n->link = NULL;
    n->data = a;
    Q.rear->link = n;
    Q.rear = n;
}
void linkquene::QDelete(linkquene &Q)
{
    qnode *n;
    n = Q.front->link;
    Q.front->link = Q.front->link->link;
    if(Q.rear == n)
        Q.rear = Q.front;
    delete n;
}
void linkquene::Qshow(linkquene &Q)
{
    qnode *p;
    p = Q.front->link;
    while(p != NULL)
    {
        cout<<p->data<<endl;
        p = p->link;
    }
}
int main(int argc, const char * argv[]) {
    linkquene q;
    linkquene *Q;
    Q = new linkquene;
    q.QInsert(*Q, 10);
    q.QDelete(*Q);
    q.QInsert(*Q, 7);
    q.QInsert(*Q, 1);
    q.QInsert(*Q, 8);
    q.QDelete(*Q);
    q.Qshow(*Q);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-29 16:59
    关注

    Q = new linkquene;
    下面加上
    q.QInit(*Q);

    不过深究起来,你对面向对象完全不懂。你的所有成员函数里都带上了一个linkquene &Q,既然如此,那么这些函数和传统的c语言的函数又有什么分别,再说你这个QInit,忘记调用了吧,难道你不知道C++可以用构造函数?你属于买了汽车又拆了发送机,装上了栓牲口的架子。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题