bool enQueue(SeqStack_t *S1, SeqStack_t *S2, int x)
{
DataType_t temp = x;
// 判断S1是否满
if (SeqStack_IsFull(S1))
{
// 判断S2是空
if (SeqStack_IsEmpty(S2))![image](uploading...)
{
while (!SeqStack_IsEmpty(S1))
{
temp = SeqStack_Pop(S1);
SeqStack_Push(S2, temp);
}
// S1中元素均进入S2中,可向S1压入X
SeqStack_Push(S1, temp);
return true;
}
else
{
return false;
}
}
else // 未满
{
// S1未满可向S1压入X
SeqStack_Push(S1, temp);
}
}
bool isQueueEmpty(SeqStack_t *S1, SeqStack_t *S2)
{
return (SeqStack_IsEmpty(S1) && SeqStack_IsEmpty(S2));
}
int deQueue(SeqStack_t *S1, SeqStack_t *S2, int x)
{
DataType_t temp = x;
// 判断队列是否空
if (isQueueEmpty(S1, S2))
{
printf("队列为空\n");
return NULL;
}
else
{
// S2非空
if (!SeqStack_IsEmpty(S2))
{
temp = SeqStack_Pop(S2);
return temp;
}
else // S2空
{
// 若S1非空
if (!SeqStack_IsEmpty(S1))
{
while (!SeqStack_IsEmpty(S1))
{
temp = SeqStack_Pop(S1);
SeqStack_Push(S2, temp);
}
// 向外输出temp
temp = SeqStack_Pop(S2);
return temp;
}
else // S1空
{
printf("队列为空\n");
return NULL;
}
}
}
}
标签:SeqStack,return,temp,队列,S2,S1,入队,出队,IsEmpty
From: https://www.cnblogs.com/eon4051/p/18160832