由于感觉自己的能力很差,都大二了,还什么都不怎么会呢。于是乎~最近重新把c语言的经典100道题翻了出来,做了一下。
结果,真令人心寒。有好多题,看似很简单很简单,可是自己还是一下子写不出来。
看来我是真的需要更多的练习了。
总的来说,做完这些题,自己的收获还是不少的,至少把很多已经遗忘了的小东西都捡了起来。
还需努力,下面进军c++百例。
不过,还是先把这个约瑟夫环的小问题记录一下吧。
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
解这道题有两种方式,可以用单循环链表做,也可以用数组做。
一、单循环链表
先建立一个单循环链表,并将原始标号存在每个结点里,用n记住,当数到n的时候就删除该结点,最后剩下的,将其编号输出则是它原来在队伍的序号。
二、数组
从1到m初始化数组,当数到n的时候将改为置0,最后数组中不为0 的元素将其输出,则是它在原来队伍中的序号。