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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵