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/07/02 02:01:54
![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,](/uploads/image/z/8233327-55-7.jpg?t=if%28%28i%3D%21i%29%21void+f31+%28stack+%2AS%29%7BQueue+Q%3BStack+T%3Bint+i%3D0%3BInitQueue%28%26Q%29%3BInitStack%28%26T%29%3BWhile%28%21StackEmpty%28S%29%29if%28%28i%3D%21i%29%21%3D0%29+Push%28%26T%2CPop%28S%29%29%3Belse+EnQueue%28%26Q%2CPop%28S%29%29%3B.%E4%B9%A6%E4%B8%8A%E8%AF%B4%E6%98%AFS%E5%85%83%E7%B4%A0%E5%87%BA%E6%A0%88%2C%E5%A5%87%E6%95%B0%E5%85%A5%E6%A0%88T%2C%E5%81%B6%E6%95%B0%E5%85%A5%E9%98%9FQ%2C)
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