在写循环队列时,经测试,在“Q->pBase=(int *)malloc(maxsize*sizeof(int));”该条语句执行时出错,以下为部分代码,请各位大大们救救小白..
typedef struct queue
{
int *pBase;
int front; //指向队列第一个元素
int rear; //指向队列最后一个元素的下一个元素
int maxsize; //循环队列的最大存储空间
}Queue,*PQueue;
void InitQueue(PQueue Q,int maxsize); //初始化队列
void QueueTraverse(PQueue Q); //队列遍历
int DestroyQueue(PQueue Q); //摧毁队列Q
int ClearQueue(PQueue Q); //清空队列Q
int QueueLength(PQueue Q); //返回队列Q的长度
int GetHead(PQueue Q,int *e); //返回队列Q的队头元素
int QueueFull(PQueue Q); //判断队列是否为满
int QueueEmpty(PQueue Q); //判断队列是否为空
int Enqueue(PQueue Q, int e); //插入元素e为Q的队尾元素
int Dequeue(PQueue Q, int *e); //删除Q的队头元素,并用e返回其值
void InitQueue(PQueue Q,int maxsize)
{
Q->pBase=(int *)malloc(maxsize*sizeof(int));
printf("malloc_OK\n");
if(NULL==Q->pBase)
{
printf("Memory allocation failure");
exit(-1); //退出程序
}
Q->front=0; //初始化参数
Q->rear=0;
Q->maxsize=maxsize;
}
……………………
int main()
{
PQueue Open;
InitQueue(Open,10);
printf("OK\n");
Enqueue(Open,12);
QueueTraverse(Open);
}