程序能通过编译,但运行不了,退出时返回:
Process exited after 2.344 seconds with return value 3221225477
查了资料,可能是野指针的问题,但我检查了半天也不知是哪里出错。
#include <iostream>
typedef struct Node{
int data;
struct Node * next;
}LinkNode;//定义链队结点类型
typedef struct{
LinkNode * front ,* rear;//队头,队尾指针
}LinkQueue;//定义链队
void initQueue(LinkQueue *&q);
bool isEmpty(LinkQueue *q);
bool enQueue(LinkQueue *&q,int e);
bool deQueue(LinkQueue *&q,int &e);
bool destry(LinkQueue *&q);
int main(){
LinkQueue *q;
int e = 2;
initQueue(q);
//enQueue(q,2);
std::cout << e << std::endl;
//enQueue(q,7);
//enQueue(q,4);
//enQueue(q,-1);
//deQueue(q,e);
//std::cout << q->front->data <<' '<< e;
destry(q);
return 0;
}
void initQueue(LinkQueue *&q){
q->front = q->rear = new LinkNode;//创建头结点,初始时尾指针指向头结点
q->front = NULL;
}
bool isEmpty(LinkQueue *q){
return q->front == q->rear;
}
bool enQueue(LinkQueue *&q,int e){
LinkNode * p = new LinkNode;
p->data = e;
p->next = NULL;
q->rear->next = p;//插入尾结点后
q->rear = p;
return true;
}
bool deQueue(LinkQueue *&q,int &e){
if(q->rear == q->front)
return false;
LinkNode * p = q->front->next ;
p->data = e;
q->front->next = p->next;
if(q->rear == p)
q->rear = q->front;
delete p;
return true;
}
bool destry(LinkQueue *&q){
while(q->front){
q->rear = q->front;
delete q->front;
q->front = q->rear;
}
return true;
}
17行初始化就有问题,p都没分配空间啊