题目1:约瑟夫生者死者游戏 实验类型(验证/设计/创新):设计 学时:10
课程设计内容:
有N个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难;无奈,大家只得同意这种办法,并议定N个人围成一圈,由第一个人开始,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人开始,数到第9人,再把他投入大海中,如此循环地进行,直到剩下N/2个乘客为止。问哪些乘客是将被投入大海的?输出这些乘客的姓名和位置。
课程设计要求:
掌握单循环链表结构下的基本操作实现算法;能够运用单循环链表的结构特点实现本游戏规则。
重点难点:
【本课程设计重点】单循环链表的结构特点和存储。
【本课程设计难点】单循环链表的建立和表中结点的删除。

#include<stdio.h>
#include<stdlib.h>typedef struct node {int data;struct node* next;
}ListNode, * LinkList;LinkList InitRing(int n, LinkList R)
{ListNode* p=NULL, * q;int i;R = q = (ListNode*)malloc(sizeof(ListNode));for (i = 1; i < n; i++) {p = (ListNode*)malloc(sizeof(ListNode));q->data = i;q->next = p;q = p;}p->data = n;//P->data=n;p->next = R;R = p;return R;
}LinkList DeleteDeath(int n, int k, LinkList R)
{int i, j;ListNode* p, * q;p = R;printf("抛入大海者的编号如下:\n");for (i = 1; i <= n / 2; i++){for (j = 1; j <= k - 1; j++){p = p->next;}q = p->next;p->next = q->next;printf("%4d", q->data);if (i % 10 == 0) printf("\n");free(q);}printf("\n");R = p;return R;
}void OutRing(int n, LinkList R)
{int i;ListNode* p;p = R;printf("幸存者的编号如下:\n");for (i = 1; i <= (n + 1) / 2; i++, p = p->next){printf("%4d", p->data);if (i % 10 == 0) printf("\n");}printf("\n");
}int main(void)
{LinkList R = NULL;int n, k;LinkList InitRing(int n, LinkList R);LinkList DeleteDeath(int n, int k, LinkList R);void OutRing(int n, LinkList R);printf("输入总人数 n 及报数上限 k :");scanf_s("%d%d", &n, &k);R = InitRing(n, R);R = DeleteDeath(n, k, R);OutRing(n, R);//scanf_s("%d", &n);
}

结果:

约瑟夫生者死者游戏 数据结构作业相关推荐

  1. 数据结构课程设计:约瑟夫生者死者游戏(c++实现、单循环链表、输出死者姓名和编号、附可执行源代码)

    1.1设计内容: 有N个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分:因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难:无奈,大家只得同意这种办法,并议定N个人围成一圈,由第 ...

  2. 排队枪毙游戏c语言,基于C语言实现的约瑟夫生者死者游戏

    1 项目简介 约瑟夫生者死者游戏的大意是:30个旅客同乘一条船,因为严重超载,加上风高浪大危险万分:因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难.无奈,大家只得统一这种方法,并议 ...

  3. Python版约瑟夫生者死者游戏

    Python版约瑟夫生者死者游戏(课设.小实验) 题目简介 算法思路(1循环,3判断) 流程图 参考代码(Python3,使用VS_Code编写) 题目简介 约瑟夫游戏的大意是:有30个旅客同乘一条船 ...

  4. 《约瑟夫生者死者游戏》算法 C语言版

    算法课上的一个小练习,线性结构的表示与实现之二-------顺序表的简单应用<约瑟夫生者死者游戏> 问题描述和求解思路在源码中已经注释出来了,进攻参考,后面的一份是一开始写的,效率极低,当 ...

  5. 算法与数据结构——约瑟夫生者死者游戏

    一.概要设计 编写一个选择第9人进行杀死的函数,由两个循环嵌套,外循环计算总杀死人数,内循环计算第9人,返回人数为存活人数.其中要注意跳过数据域为空的头指针. 总函数中利用循环创建单循环链表,利用数组 ...

  6. 题目二:约瑟夫生者死者游戏

    约瑟夫游戏的大意:30 个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分.因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难.无奈,大家只 得同意这种办法,并议定 30 个人 ...

  7. 约瑟夫生者死者游戏:有N个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难;无奈,大家只得同意这种办法,并议定N个人围成一圈,由

    目录 1.实验题目 2.实验目的 3.概要设计 3.1 问题分析 3.2 流程图 3.3 功能模块

  8. 约瑟夫生死者游戏实验报告c语言,约瑟夫生死游戏(C++)数据结构实现.docx

    .. 题目二: 约瑟夫生者死者游戏(链表存储) 一:[内容与要求] 约瑟夫游戏的大意是:每30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分:因此船长告诉乘客,只有将全船一半的旅客投入还中,其 ...

  9. 约瑟夫生者死者小游戏

    今天看菜鸟教程的一个python小练习,约瑟夫生者死者小游戏L:规则如下: # 30 个人在一条船上,超载,需要 15 人下船. # 于是人们排成一队,排队的位置即为他们的编号. # 报数,从 1 开 ...

最新文章

  1. maven配置阿里云镜像后Eclipse不生效解决办法
  2. 一文读懂大数据平台——写给大数据开发初学者的话!
  3. signature=16ceadeb007b12c6b3bcab834073ab21,Distributed Backscattering
  4. iOS 第三方登录 !
  5. element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
  6. Django 用 uploadify 实现图片批量上传
  7. java list 遍历查找_Java用list储存,遍历,查询指定信息过程详解
  8. Linux -- 以root权限安装QT5.8.0
  9. Javascript当中的RSA加解密
  10. 斐讯k2修改dns服务器,斐讯K2固件修改的一些信息
  11. Planetside.Software.Terragen.v0.9.43.WinALL 1CD(景观产生器)
  12. 图像识别并用机械手进行抓取
  13. Maven中央仓库地址和Nexus 下载地址
  14. 七:如何实现代理与日志清除技术
  15. 基于SSM房屋租赁管理系统
  16. Python网络爬虫与信息提取(二):网络爬虫之规则(Requests库 Robots规则)
  17. ISBN(国际标准书号)的校验
  18. 【离散数学】 MIT 6.042J 笔记 - Lecture 1 Introductions and Proofs
  19. 365天深度学习训练营-第P5周:运动鞋识别
  20. c 语言 合并多个excel,C#操作Excel合并多个Excel文件

热门文章

  1. hypermill后处理制作视频教程 宏 五轴 车铣后处理制作教程
  2. 华为手机像素密度排行_华为全新拍照手机:麒麟985+1亿像素+4800万,配置突破巅峰...
  3. flash 3.0拼图游戏
  4. 计算机专业问未来有什么理想,我和计算机
  5. nodejs项目实例心理咨询微信小程序
  6. 吸血鬼日记.The.Wampire.Diaries
  7. Android客户端与服务器连接
  8. 在CentOS8上实现私有CA和证书申请
  9. 超实用的Java面试宝典
  10. 陪孩子一起学python第二季_陪伴的句子