原题:用两个栈模拟一个队列运算的基本思想是用一个栈作为输入,另一个栈作为输出。进队列时,将数据进入到作为输入的栈中。输出时,如果作为输出的栈已空,则从输入栈将已输入到栈中的所有数据输入到输出栈中,然后由输出栈输出数据;如果作为输出的栈不空,则就从输出栈输出数据。显然,只有在输入、输出栈均为空时队列才空。
程序如下:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#define INIT_SIZE 100//存储空间初始分配量
#define INCREMENT 10//存储空间分配增量
#define ElemType char
typedef struct
{
ElemType *base;//在栈构造之前和销毁之后,base值为NULL
ElemType *top;//栈顶指针
int stacksize;//当前已分配的存储空间,以元素为单位
}SqStack;
typedef struct
{
SqStack S1;
SqStack S2;
}DSQueue;
int InitStack(SqStack &S)
{//构造一个空栈
S.base=new ElemType[INIT_SIZE];
if(S.base == NULL)
{//溢出
cout<<"存储空间分配失败!"<<endl;return