if((i=!i)!void f31 (stack *S){Queue Q;Stack T;int i=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S))if((i=!i)!=0) Push(&T,Pop(S));else EnQueue(&Q,Pop(S));.书上说是S元素出栈,奇数入栈T,偶数入队Q,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 20:20:02
if((i=!i)!void f31 (stack *S){Queue Q;Stack T;int i=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S))if((i=!i)!=0) Push(&T,Pop(S));else EnQueue(&Q,Pop(S));.书上说是S元素出栈,奇数入栈T,偶数入队Q,
if((i=!i)!
void f31 (stack *S)
{
Queue Q;
Stack T;
int i=0;
InitQueue(&Q);
InitStack(&T);
While(!StackEmpty(S))
if((i=!i)!=0) Push(&T,Pop(S));
else EnQueue(&Q,Pop(S));
.
书上说是S元素出栈,奇数入栈T,偶数入队Q,
if((i=!i)!void f31 (stack *S){Queue Q;Stack T;int i=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S))if((i=!i)!=0) Push(&T,Pop(S));else EnQueue(&Q,Pop(S));.书上说是S元素出栈,奇数入栈T,偶数入队Q,
前面有int i=0,已经赋值初始值0,可认为是偶数,
后面的循环中 i在非0和0两者之间循环变化,
因为 i=!i 即表示将i取逻辑非然后再赋值回i,
也就是如果原来i=0就得到i为非0 (二进制的全1),再循环一次又会得到0,相当于奇数和偶数次循环,
if((i=!i)!=0)就是如果再赋值后不为0,则条件成立,执行Push(&T,Pop(S)); 即奇数入栈T
否则执行EnQueue(&Q,Pop(S)); 即偶数入队Q