精华内容
下载资源
问答
  • 数据结构 约瑟夫环

    2019-01-02 17:38:54
    简单的约瑟夫环代码约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 分析: (1)由于对于每个...
  • 数据结构约瑟夫环

    2014-12-04 15:35:04
    数据结构实验 用c语言实现约瑟夫环 1.一群人围在一起坐成环状(如:N) 2、从某个编号开始报数(如:K) 3、数到某个数(如:M)的时候,此人出列,下一个人重新报数 4、一直循环,直到所有人出列,约瑟夫环...
  • 数据结构实验报告 题目约瑟夫环问题 一设计内容 [问题描述] 约瑟夫环问题的一种描述是编号为123n的n个人按顺时针方向围坐一圈每人手持一个密码正整数一开始任选一个整数作为报数上限值从第一人开始顺时针自1开始顺序...
  • 数据结构 约瑟夫环问题,代码完整,思路清晰。。
  • 以下是约瑟夫环问题的实现代码由两部分组成jeseph.h文件和jesephMain.c文件 jeseph.h文件如下 /*自定义DataType数据类型*/ typedef struct { int number;//每个人所对应的序号 int cipher;//每个人手中的密码 } ...
  • 数据结构约瑟夫环问题的课程设计
  • 数据结构 约瑟夫环 源代码 完全可运行 放心下载
  • 数据结构约瑟夫环实验报告,实验数据仅供参考
  • 数据结构里的约瑟夫环代码,这是数据结构里的实验部分
  • 提供数据结构约瑟夫环的解决方法,很简单,并且容易看懂适合初学者看,提高数据结构能力
  • 数据结构 约瑟夫环(带密码) C++实现 编号为1,2,…,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时...
  • 可编辑范本 可编辑范本 数据结构实验报告 题目约瑟夫环问题 一设计内容 [问题描述] 约瑟夫环问题的一种描述是编号为 1, 2, 3,n的n个人按顺时针方向围 坐一圈每人手持一个密码正整数 一开始任选一个整数作为报数上限...
  • 数据结构约瑟夫环算法,C语言描述。菜单显示
  • 题目约瑟夫环问题 一设计内容 [问题描述] 约瑟夫环问题的一种描述是编号为123n 的n个人按顺时针方向围 坐一圈每人手持一个密码正整数一开始任选一个整数作为报数上限值 从第一人开始顺时针自1开始顺序报数报到m 时...
  • C/c++数据结构 约瑟夫环 带注释 自己做的得优
  • @TOC使用链栈完成约瑟夫环 C语言 数据结构 转载标明出处 建议使用循环单链表完成!!!! 思路 使用链栈和单链表存储数据 先将数据出栈,再存到单链表中(尾插和头插都可,这里使用尾插)(单链表和链栈在数据储存...

    @TOC使用链栈完成约瑟夫环 C语言 数据结构
    转载标明出处

    建议使用循环单链表完成!!!!

    思路

    使用链栈和单链表存储数据
    先将数据出栈,再存到单链表中(尾插和头插都可,这里使用尾插)(单链表和链栈在数据储存形式上没有区别,区别在于操作方法)遇到被杀掉的那个人则只出栈,不尾插。最后将单链表赋给链栈,单链表清空。以此循环,直到只剩下一个人

    代码

    #include <stdio.h>
    
    typedef int Datatype;
    typedef struct SNode{
    	Datatype data;
    	struct SNode *next;
    }SNode;
    
    SNode* InitStack()
    {
    	SNode* S;
    	S = (SNode*)malloc(sizeof(SNode));
    	S->data = NULL;
    	S->next = NULL;
    	return S;
    }
    
    int IsEmpty(SNode* S)
    {
    	if (S->next == NULL)
    		return 1;
    	else
    		return 0;
    }
    
    void Push(SNode* S, Datatype e)
    {
    	SNode* p;
    	p = (SNode*)malloc(sizeof(SNode));
    	p->data = e;
    	p->next = S->next;
    	S->next = p;
    }
    
    Datatype Pop(SNode* S, Datatype *re)
    {
    	if (IsEmpty(S))
    	{
    		printf("栈为空\n");
    		*re = NULL;
    	}
    	SNode* p;
    	*re = S->next->data;
    	p = S->next;
    	S->next = p->next;
    	free(p);
    	return re;
    }
    
    void GetTop(SNode* S, Datatype *e)
    {
    	if (S->next == NULL)
    		return;
    	*e = S->next->data;
    }
    
    void Add(SNode* S,int dt) {
    	SNode* p,*n;
    	n = (SNode*)malloc(sizeof(SNode));
    	n->data = dt;
    	n->next = NULL;
    	if (IsEmpty(S))
    	{
    		S->next = n;
    	}
    	else {
    		p = S;
    		while (p->next) {
    			p = p->next;
    		}
    		p->next = n;
    	}
    }
    
    void Move(SNode* A, SNode* B){
    	int retn;
    	Pop(A, &retn);
    	Add(B, retn);
    }
    
    void Print(SNode* top){
    	SNode* p;
    	p = top->next;
    	printf("链栈内容:");
    	while (p)
    	{
    		//printf("ad:%2d", p->next);
    		printf("%2d", p->data);
    		p = p->next;
    	}
    	printf("\n");
    }
    
    void Out(SNode* A, SNode* B,int n) {
    	int number = 1,re,num = 1;
    	while (1)
    	{
    		while (A->next)
    		{
    			if (number == n) {
    				Pop(A, &re);
    				printf("第%d个出局!\n", re);
    				number = 1;
    				num++;
    			}
    			if (IsEmpty(A)) {
    				break;
    			}
    			Move(A, B);
    			number++;
    			num++;
    		}
    		A->next = B->next;
    		B->next = NULL;
    		if (!A->next->next)
    		{
    			printf("第%d获胜!\n", A->next->data);
    			break;
    		}
    	}
    }
    
    void Fill(SNode* S, int count) {
    	for (int i = 0; i < count; i++)
    	{
    		Push(S, count -i);
    	}
    }
    
    int main(){
    	int n, count = 0;
    	SNode *SA = InitStack();
    	SNode *SB = InitStack();
    	printf("请输入人数:");
    	scanf("%d", &count);
    	Fill(SA, count);
    	printf("初始-");
    	Print(SA);
    	Print(SB);
    	printf("请输入死亡数字:");
    	scanf("%d", &n);
    	if (n>=count)
    	{
    		n = n % count;
    	}
    	Out(SA, SB, n);
    	//printf("结束-");
    	//Print(SA);
    	//Print(SB);
    	system("pause");
    	return 0;
    }
    
    展开全文
  • 数据结构链表求解约瑟夫环,我亲手所写,搞定数据结构不是梦。
  • 杭电数据结构最小生成树实验报告,供学弟学妹们借鉴使用。 其余学校也能使用,文件包含源码。源码绝对正确,这是我的期末作业哈哈。 希望同学们数据结构满绩哈哈。
  • 数据结构实验报告 1 题目约瑟夫环问题 一设计内容 [问题描述] 约瑟夫环问题的一种描述是编号为123n 的n 个人按顺时针方向围 坐一圈每人手持一个密码正整数一开始任选一个整数作为报数上限值 从第一人开始顺时针自1 ...
  • C数据结构 约瑟夫环

    2009-11-28 15:20:26
    用C语言编写的约瑟夫环问题,是数据结构链表的经典实例

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,439
精华内容 575
关键字:

数据结构约瑟夫环

数据结构 订阅