主要错在InitQueue函数里面。当声明一个指针的时候,除了指针本身占用的内存以外,是不会分配具体的内存空间的。也就是说,如果只是CircQueue *q;声明指针q,然后直接使用它的内部成员q->front,q->rear = 0是不合法的。实际上,在Visual Studio里面是编译不通过的。
修改后运行截图
CircQueue *InitQueue() {
CircQueue *q = (CircQueue*)malloc(sizeof(CircQueue));
q->front = 0;
q->rear = 0;
return q;
}