首页 新闻 搜索 专区 学院

用C写的循环队列,不知道哪里出错了,能帮我看看吗?

0
悬赏园豆:20 [已解决问题] 解决于 2014-08-14 10:26
#include <iostream>

using namespace std;

 #define QueueSize 100
 typedef char DataType;
 typedef struct{
     int front;
     int rear;
     int count;
     DataType data[QueueSize]; 
 }CirQueue;
 
 void InitQueue(CirQueue *Q)
 {//置队空 
     Q->front = Q->rear = 0;
     Q->count = 0;
 } 
 
 int QueueEmpty(CirQueue *Q)
 {//判队空 
     return Q->count == 0;
 }
 
 int QueueFull(CirQueue *Q)
 {//判队满 
     return Q->count == QueueSize;
 } 
 
 void EnQueue(CirQueue *Q, DataType x)
 {//入队 
     if (QueueFull((Q)))
         perror("Queue overflow");
     Q->count ++;
     Q->data[Q->rear] = x;
     Q->rear = (Q->rear + 1)%QueueSize;
 } 
 
 DataType DeQueue(CirQueue *Q)
 {//出队 
     DataType temp;
     if (QueueEmpty((Q)))
         perror("Queue underflow");
     temp = Q->data[Q->front];
     Q->count --;
     Q->front = (Q->front+1)&QueueSize;
     return temp;
 } 
 
 DataType QueueFront(CirQueue *Q)
 {//取队头元素 
     if (QueueEmpty((Q)))
         perror("Queue is empty.");
     return Q->data[Q->front];    
 } 
 
 
 int main()
 {
     CirQueue *Q;
     EnQueue(Q, 'a');
     //EnQueue(Q, 'b');
     //DeQueue(Q);
     cout << QueueFront(Q);
     
     
     return 0;
 } 

ii沙漠的主页 ii沙漠 | 初学一级 | 园豆:114
提问于:2014-08-14 10:01
< >
分享
最佳答案
1

CirQueue Q;

memsec(&Q,0,sizeof(CirQueue));


EnQueue(&Q, 'a');

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2014-08-14 10:09

高人啊。小生拜服。

ii沙漠 | 园豆:114 (初学一级) | 2014-08-14 10:26
其他回答(1)
0

估计是读到了内存里面不应该读的地方吧?好好看看指针有没有越界。

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-14 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册