哈哈,想当年我交实验报告的时候(其时就是去年拉),我的那个程序只有17行(其实是很简单的约瑟夫环拉),不过我们要交3个程序,最短的是那个约瑟夫环,最长的那个对树的各种操作有近千行,不过这3个程序得分都差不多。为什么呢?是不是觉得给分很不合理?
那我们来看看那个约瑟夫环的问题:
******************
编序为1,2,...n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始人选一个整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始从1报数,如此下去,知道所有人全部出列为止,设计一个程序求出出列顺序.
采用单循环链表模拟此程序,按照出列的顺序印出各人的编号
测试数据:m的初值为20;n=7,7个人的密码依次为3,1,7,2,4,8,4.首先m的值为6(正确的出列顺序为6,1,4,7,2,3,5))
******************
这个问题的确非常简单,建个单向链表再用个for循环就可以搞定了,很多人就是这样做的,这样做的人全都及格了。而我的程序只比他们多写了一句m=m%n(n为当前剩下的人数,取m除以n的余数实际上就是对运算进行了化简,减少了运算量,提高了程序的效率),结果我比那些及格的人高了30分。实际上求余才是约瑟夫环的真正考点。数据结构不是来教你编程的,而是来教你怎么编好程的,考的不是你的编程能力,而是你的思想。思考方法,思维方向才是数据结构的真正重点。所以实验报告的好坏并不在于你的程序的长短,而在于你的程序反映出的你的编程算法是否最优。就象C语言中最经典的例子“HELLO WORLD"一样,最好的并不一定要最长。
,一不小心说了这么多,希望楼主不要嫌我罗索啊