结构体定义如下: #define QUEUE_MAX_SIZE 4 //队列存储空间的分配量 #define QUEUE_INIT_SIZE 4 //队列存储空间的初始分配量 typedef struct { char *base; //初始化的动态分配存储空间 int front; //头指针,若队列不空,指向队列头元素 int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue; 队列定义如下: // 版权所有 (C)2007, ***(成都)有限公司。 // // 描述: //作业6.3循环队列 //循环队列是一种先进先出的数据结构,请用数组实现这种数据结构,要求: //1. 队列容量为4 //2. 实现add、remove、isEmpty、isFull方法; //3.队列存放数据为字符串 // 作者:陈进宇 chenjinyu_china@yeah.net // 日期:start:2009/3/10 end:2009/3/ #include <iostream> #include "QNode.h" using namespace std; void InitQueue(SqQueue &Q) { //构造一个空队列Q Q.base = (char *) malloc(QUEUE_INIT_SIZE * sizeof(char)); if( !Q.base ) printf("InitQueue:Memory Assign Fail!/n");//存储分配失败 Q.front = Q.rear = 0; printf("InitQueue: Memory Assign Succee!/n"); } void Add(SqQueue &Q,char e) { if((Q.rear + 1) % QUEUE_MAX_SIZE == Q.front) //判满时将少用一个元素空间 { printf("Add:Queue short!/n"); return; } Q.base[Q.rear] = e; Q.rear = (Q.rear + 1) % QUEUE_MAX_SIZE; printf("Add:Add Succee!/n"); } void Remove(SqQueue &Q,char &e) { if(Q.front == Q.rear) { printf("Remove :Queue empty!"); return ; } e = Q.base[Q.front]; Q.front = (Q.front + 1) % QUEUE_MAX_SIZE; printf("Remove :Remove Succee!"); } void IsEmpty(SqQueue &Q) { if(Q.front == Q.rear) printf("IsEmpty:Queue Short!"); } void IsFull(SqQueue &Q) { if((Q.rear + 1) % QUEUE_MAX_SIZE == Q.front) printf("IsFull: Queue is Full!"); } void main() { char c1 = 'a', c2 = 'b', c3 = 'c',c4 = 'd', c5 = 'e'; SqQueue SQ; InitQueue(SQ); Add(SQ,c1); IsEmpty(SQ); Add(SQ,c2); Add(SQ,c3); Add(SQ,c4); Add(SQ,c5); Remove(SQ,c1); }