#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; }
CirQueue Q;
memsec(&Q,0,sizeof(CirQueue));
EnQueue(&Q, 'a');
高人啊。小生拜服。
估计是读到了内存里面不应该读的地方吧?好好看看指针有没有越界。