代码可以编译,但是我执行exe文件的时候会崩溃

问题描述 投票:0回答:1

我想创建一个链接队列并使用它。

代码可以编译但是.exe文件会在我执行的时候崩溃

我确定这不是Vscode终端的问题。我用powershell运行它时发生了同样的结果

runing result

头文件:

我定义了队列节点结构(lkQueueNode)和队列结构(lkQueueNode)

两个函数,一个是添加元素,另一个是删除元素

#include<iostream>
using namespace std;
#ifndef lkqueue
#define lkqueue
//Queue Node
struct lkQueueNode{
    lkQueueNode(){
        next=nullptr;
        data = 0;
    }
    int data;
    lkQueueNode *next;
};

typedef lkQueueNode *QueueNode;
//Queue Structure
struct lkQueueStructure{
    lkQueueStructure(){
        rear = nullptr;
        front = nullptr;
    }
    QueueNode rear;
    QueueNode front;
};

typedef lkQueueStructure *lkQueue; 

 //Add
void AddQ(lkQueue Q,int item)
{
    QueueNode NewAdd = new lkQueueNode;
    if(Q->front==nullptr){
        Q->front = NewAdd;
        Q->rear = NewAdd;
    }
    else{
        Q->rear->next = NewAdd;
        Q->rear = NewAdd;
    }
    NewAdd->data = item;
}


//Delete
int DeleteQ(lkQueue Q)
{
    QueueNode firstnode;
    int item;
    if(Q->front == nullptr){//empty or not
        cout<<"empty!"<<endl;
        return 0;
    }
    firstnode = Q->front;//save the first elm
    if(Q->front == Q->rear){  //when only one elem
        Q->front = Q->rear = nullptr;
    }
    else{
        Q->front = Q->front->next;
    }
    item = firstnode->data;
    delete firstnode;  //Free
    return item;
}


#endif

main.cpp: 我创建了一个 lkQueue 指针“aqueue”,然后添加整数 5、7、9 并删除(也返回)整数 5 , 用 "cout" 来显示

#include<iostream>
#include "lkqueue.h"
using namespace std;
int main()
{
    lkQueue aqueue;
    AddQ(aqueue,5);
    AddQ(aqueue,7);
    AddQ(aqueue,9);
    int i = DeleteQ(aqueue);
    cout<<i<<endl;
    return 0;
}

:)

希望能显示数字5

c++ data-structures crash queue
1个回答
0
投票

Q
是 nullptr。你必须在
main()

中初始化它
   lkQueue aqueue = new lkQueueStructure;

然后它运行正常。

$ ./x
5
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.