见上题的解答
参见上面题
typedef struct node
{elemtype elemcq[m]; //m为队列最大可能的容量
int front rear; //front和rear分别为队头和队尾指针
}cqnode;
cqnode cq;
初始状态
cqfront=cqrear=;
队列空
cqfront==cqrear;
队列满
(cqrear+)%m==cqfront;
栈的特点是后进先出队列的特点是先进先出初始时设栈s和栈s均为空
()用栈s和s模拟一个队列的输入设s和s容量相等分以下三种情况讨论若s未满则元素入s栈若s满s空则将s全部元素退栈再压栈入s之后元素入s栈若s满s不空(已有出队列元素)则不能入队
()用栈s和s模拟队列出队(删除)若栈s不空退栈即是队列的出队若s为空且s不空则将s栈中全部元素退栈并依次压入s中s栈顶元素退栈这就是相当于队列的出队若栈s为空并且s也为空队列空不能出队
()判队空 若栈s为空并且s也为空才是队列空
讨论s和s容量之和是队列的最大容量其操作是s栈满后全部退栈并压栈入s(设s和s容量相等)再入栈s直至s满这相当队列元素入队完毕出队时s退栈完毕后s栈中元素依次退栈到ss退栈完毕相当于队列中全部元素出队
在栈s不空情况下若要求入队操作只要s不满就可压入s中若s满和s不空状态下要求队列的入队时按出错处理
()队空sfront=srear //设s是sequeuetp类型变量
()队满(srear+)MOD MAXSIZE=sfront //数组下标为 MAXSIZE
具体参见本章应用题第题
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []