2013年江苏省数据库入门加强
1、约瑟夫环问题(Josephus问题)是指编号为1、2、 ,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列, ,如此重复直到所有的人全部出列为止。现要求采用循环链表结构设计一个算法,模拟此过程。
#include<stdlib.h>
typedef int datatype;
typedef struct node
{datatype data;
struct node *next;
}listnode;
typedef listnode *linklist;
void jose(linklist head,int s,int m)
{linklist k1,pre,p;
int count=1;
pre=NULL;
k1=head; /*k1为报数的起点*/
while (count!=s) /*找初始报数起点*/
{pre=k1;
k1=k1->next;
count++;
}
while(k1->next!=k1) /*当循环链表中的结点个数大于1时*/
{ p=k1; /*从k1开始报数*/
count=1;
while (count!=m) /*连续数m个结点*/
{ pre=p;
p=p->next;
count++;
}
pre->next=p->next; /*输出该结点,并删除该结点*/
printf("%4d",p->data);
free(p);
k1=pre->next; /*新的报数起点*/
}
printf("%4d",k1->data); /*输出最后一个结点*/
free(k1);
}
main()
{linklist head,p,r;
int n,s,m,i;
printf("n=");
scanf("%d",&n);
printf("s=");
scanf("%d",&s);
2013年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2013年江苏省数据库入门加强 1、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉...
2013年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2013年江苏省数据库入门加强 1、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉...
2013年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2013年江苏省数据库入门加强 1、约瑟夫环问题(Josephus 问题)是指编号为 1、2、?,n 的 n(n>0)个人...
2013年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2013年江苏省数据库入门加强 1、约瑟夫环问题(Josephus 问题)是指编号为 1、2、?,n 的 n(n>0)个人...
2013江苏省数据库入门加强_计算机软件及应用_IT/计算机_专业资料。1、冒泡排序算法是把大的元素向上移(气泡的上浮) ,也可以把小的元素向下移(气泡的下 沉)请给...
2014江苏省数据库入门加强_韩语学习_外语学习_教育专区。2014江苏省数据库入门加强 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为 O(m+n) ,因此不能...
2014江苏省数据库入门加强_韩语学习_外语学习_教育专区。2014江苏省数据库入门加强 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为 O(m+n) ,因此不能...
2014年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2014年江苏省数据库入门加强 1、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历...
2014年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2014年江苏省数据库入门加强 1、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历...
2013年江苏省学习数据库加强_韩语学习_外语学习_教育专区。2013年江苏省学习数据库加强 1、 根据二叉排序树中序遍历所得结点值为增序的性质, 在遍历中将当前遍历...
2015年江苏省数据库入门加强_韩语学习_外语学习_教育专区。2015年江苏省数据库入门加强 1、设有一个数组中存放了一个无序的关键序列K1、K2、…、Kn。现要求将Kn...

我要评论