跟着青岛大学-王卓老师的视频进行到链队列时,运行链队列代码的时候遇到了两个问题:
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[