请利用两个栈S1和S2来模拟一个队列。请高手们检查我写程序的错误,在主函数中调用时得不到正确的结果..谢谢!
#include "stdio.h" 
#define MAXSIZE 100 /* 宏定义 */ 

typedef struct stack /*定义栈结构体类型*/ 

int data[MAXSIZE]; 
int top; 
}Stack; 
int x; 
Stack s1,s2; /*栈变量*/ 
int PUSH(Stack s,int x) /*入栈子函数*/ 
{ s.data[s1.top]=x; 
s.top++; 
return 1; 


int POP(Stack s,int x) /*出栈子函数*/ 
{ s.top--; 
x=s.data[s.top]; 
return 1; 


int Sempty(Stack s )/*栈空子函数*/ 
{if(s.top==0) 

return 1; 

else 
return 0; 


int enpueue(Stack s1,int x)/*入队子函数*/ 
{ if (s1.top==MAXSIZE&&!Sempty(s2)) /* s1满s2非空,这时s1不能再入栈*/ 

printf("zhanman"); 
return 0; 

if (s1.top==MAXSIZE&&Sempty(s2)) /*若s2为空,先将s1出栈,元素再入栈到s2*/ 

while(!Sempty(s1)) 

POP(s1,x); 
PUSH(s2,x); 


PUSH(s1,x); 
return 1; 


void dequeue(Stack s2,Stack s1) 

if(!Sempty(s2)) 

POP(s2,x); 
printf("chudui:%d ",x); 

else /*先将栈s1入s2中,再作出队操作*/ 

while(!Sempty(s1)) 

POP(s1,x); 
PUSH(s2,x); 

POP(s2,x); 
printf("chudui:%d\n ",x); 


int queue_empty(Stack s2,Stack s1) 

if (Sempty(s1)&&Sempty(s2)) 

printf("duikong\n"); 
return(1);/*队列空*/ 

else 
return 0; 
}