[题目分析] 用一维数组 v[M]实现循环队列其中M是队列长度设队头指针 front和队尾指针rear约定front指向队头元素的前一位置rear指向队尾元素定义front=rear时为队空(rear+)%m=front 为队满约定队头端入队向下标小的方向发展队尾端入队向下标大的方向发展
()#define M 队列可能达到的最大长度
typedef struct
{ elemtp data[M];
int frontrear;
} cycqueue;
()elemtp delqueue ( cycqueue Q)
//Q是如上定义的循环队列本算法实现从队尾删除若删除成功返回被删除元素否则给出出错信息
{ if (Qfront==Qrear) {printf(队列空); exit();}
Qrear=(Qrear+M)%M; //修改队尾指针
return(Qdata[(Qrear++M)%M]); //返回出队元素
}//从队尾删除算法结束
void enqueue (cycqueue Q elemtp x)
// Q是顺序存储的循环队列本算法实现从队头插入元素x
{if (Qrear==(Qfront+M)%M) {printf(队满; exit();)
Qdata[Qfront]=x; //x 入队列
Qfront=(Qfront+M)%M; //修改队头指针
}// 结束从队头插入算法
参见
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []