跟着青岛大学-王卓老师的视频进行到链队列时,运行链队列代码的时候遇到了两个问题:
1.)Program received signal SIGSEGV Segmentation fault
附代码:
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct qnode{
ElemType data;
struct qnode *next;
}DataNode; //数据节点
typedef struct{
DataNode *front;
DataNode *rear;
}LinkQuNode; //链队节点
//初始化
void InitQueue(LinkQuNode *&q){
q = (LinkQuNode *)malloc(sizeof(LinkQuNode)); //必加
q->front = q->rear = (DataNode *)malloc(sizeof(DataNode));
q->front->next = NULL;
}
//判断是否为空
bool EmptyQueue(LinkQuNode *q){
if(q->front->next == NULL) return true;
return false;
}
//入队
void EnQueue(LinkQuNode *&q,ElemType e){
DataNode *p;
p = (DataNode *)malloc(sizeof(DataNode));
p->data = e;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
//出队
bool DeQueue(LinkQuNode *&q,ElemType &e){
if (EmptyQueue(q)) return false;
DataNode *p;
p = q->front->next;
e = p->data;
q->front->next = p->next;
free(p);
// printf("%c\n",e);
return true;
}
int main(){
LinkQuNode *p;
ElemType a[]="abcdefg",b[10]="";