数据结构
文章平均质量分 79
yinyuzw
这个作者很懒,什么都没留下…
展开
-
约瑟夫环非递归算法分析
【Joseph问题描述】n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。【求解思路】我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始): k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2 并且从k开始报0。 现在我们把他们的编号做一下转换转载 2012-09-08 10:36:03 · 1593 阅读 · 0 评论 -
用链表写约瑟夫环
约瑟夫环自己以前写过,现在想用数据结构实现一次。先贴上自己先前用数组实现的代码:/*约瑟夫环有n个人(n<=1000),用1,2,...,n编号,顺序排列,并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子,且后面的人继续报数(同样从1到4报数),问最后留下的是原来第几号的那一位输入人数输出最后剩下的人。*/#includeint main(){转载 2012-09-08 15:20:16 · 257 阅读 · 0 评论 -
二叉排序树的建立,删除
最近在复习数据结构,对于二叉排序树,看了一些书,参考别人的思想写出了这个代码,希望看到的人给点修改建议代码如下:#include #include typedef struct bitree{ int data; struct bitree *pLeft; struct bitree *pRight;}Bitree;typedef struct bitree * iBit原创 2012-09-12 10:17:57 · 245 阅读 · 0 评论 -
归并排序算法 C代码实现
合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个 N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—路转载 2012-09-14 17:36:05 · 941 阅读 · 0 评论