#include<malloc.h>
typedef struct Queue
{
int *pBase;
int front;
int rear;
}QUEUE,*PQUEUE;
void init(PQUEUE pQ);//初始化隊列
bool en_queue(PQUEUE pQ,int val);//向隊列裡放入數據
void traverse(PQUEUE pQ);//遍歷隊列
bool full_queue(PQUEUE pQ);//判斷隊列是否為滿
int main()
{
PQUEUE Q;
init(Q);
en_queue(Q,1);
traverse(Q);
return 0;
}
void init(PQUEUE pQ)
{
pQ->pBase=(int*)malloc(sizeof(int)*6);
pQ->front=0;
pQ->rear=0;
}
bool en_queue(PQUEUE pQ,int val)
{
if(full_queue(pQ))
{
printf("隊列已滿\n");
return false;
}
else
{
pQ->pBase[pQ->rear]=val;
pQ->rear=(pQ->rear + 1)%6;
return true;
}
}
bool full_queue(PQUEUE pQ)
{
if((pQ->rear + 1)%6==pQ->front)
{
return true;
}
else
{
return false;
}
}
void traverse(PQUEUE pQ)
{
while(pQ->front!=pQ->rear)
{
printf("%d ",pQ->pBase[pQ->front]);
pQ->front=(pQ->front + 1)%6;
}
return;
}
這個程序重是報錯,在VS2008的C++的環境下運行,報錯提示為:隊列.cpp(16) : warning C4700: 使用了未初始化的局部變量“Q”
因為你真的沒有初始化,Q是個指針,你又不為它分配空間,然後又直接用了,當然報錯啦。