能给我解释一下每条代码吗,不太懂c
【这段程序算是在c++里面的写的c】
主要学过c,每一行代码 不难理解吧。难理解的是整个逻辑。。。
运行结果是一个 列举 的排列组合
在输出abc ,acb的时候,你理解没?
1,主循环第一次 ps->abc
程序一开始pc,pb同时是从是指向ps的首地址。这样一轮下去,pc,pb都是同步的,所以此地输出的时候,它们等于没有交换值。so 第一次输出为abc。
跳出最里层的那层循环后,这个时候,pb->bc pc->bc 由于pc自加了一次,那么pc->c,pb->bc 所以会交换值。那么这个时候等于pc->b ,pb->cb 。指针指向值得修改,会修改原始的值,其实到这个时候ps->acb 。然后就输出 acb。然后天跳出这个Permutation函数,最后再通过下面的操作
temp=*pb;
*pb=*pc;
*pc=temp; 把ps再变成原来的 ps->abc;
第一次主循环结束, 输出结果为abc,acb.
2,主循环第二次 ps->abc
由于++pc 自加了一次。这个时候,pb->abc 而pc已经变成了 pc->bc。
执行下来一次,ps就会变成 ps->bac 。然后和上面的逻辑一样,就会输出
bac,bca. 最后通过变换,又使ps变为abc ,ps->abc。
3,主循环第三次 ps还是指向abc ,
这个时候一开始,pb->abc 。pc->c;
然后通过替换ps->cab。 输出cab ,cba 。然后又替换回来,ps->abc。
这个应该是封装的函数吧!写精辟呀!我说了,也许一开始你也理解不了。自己去调试,看每一个步骤的数值变化,就会慢慢理解了。程序到深处,其实就看算法,看数学逻辑。这就是为么,那些从计算机学校毕业滴,虽然一开始工资比较高,都是后续发展不的原因。敲代码,只要学那么几哈,基本都能敲【农民工】。。。但是要设计高级点的代码,就需数学逻辑了。
2023-06-12 广告