【C】循环淘汰 (用结构体完成; 头文件不要加malloc.h 或 alloc.h)
循环淘汰 (用结构体完成; 头文件不要加malloc.h 或 alloc.h) 有N 个同学,编号分别为1,2,3……,N,围成一圈,随便选定一个整数m,让大家按顺时 针依次报数,报到m 的同学便会从圈子中退出,从而被淘汰,直到最后剩下一个人。 编写函数实现上述循环淘汰功能。 编写一个程序测试上述函数的功能,要求用户能够任意输入N 与m;程序输入最后剩下人的编号。 结构体定义: struct stu {int num;struct stu *next; }; 输入提示信息:"请输入N的值: " 输入信息格式:"%d" 输入提示信息:"请输入m的值: " 输入信息格式:"%d" 输出信息数据格式:"最后剩下同学的编号是 %d 号\n\n"运行样例1: 请输入N的值: 10↙ 请输入m的值: 2↙ 最后剩下同学的编号是 5 号
#include <stdio.h>
#include <stdlib.h>#define LEN sizeof(struct stu)
struct stu
{ int num;struct stu *next;
} ;
struct stu *create(int n);
int select(struct stu *head, int n, int m);
void main()
{ struct stu *head;int m, n, last;printf("请输入N的值: ");scanf("%d", &n);printf("请输入m的值: ");scanf("%d", &m);head = create(n);last = select(head, n, m);printf("最后剩下同学的编号是 %d 号\n\n", last);
}
struct stu *create(int n)
{ int i;struct stu *p1, *p2;struct stu *head = NULL;p2 = p1 = (struct stu*) malloc(LEN);for (i = 1; i <= n; i++){ if (i == 1)head = p1;elsep2->next = p1;p1->num = i;p2 = p1;p1 = (struct stu*) malloc(LEN);}p2->next = head;return head;
}
int select(struct stu *head, int n, int m)
{ int i, j;struct stu *p1 = head, *p2 = p1;if (n == 1 || m == 1)return n;for (i = 1; i < n; i++){ for (j = 2; j < m; j++)p1 = p1->next;p2 = p1;p1 = p1->next;p1 = p1->next;p2->next = p1;}return p1->num;
}
【C】循环淘汰 (用结构体完成; 头文件不要加malloc.h 或 alloc.h)相关推荐
- (6)风色从零单排《C++ Primer》 结构体,头文件
结构体: c++11下,可以对结构体像类一样初始化. struct Sales_data{std::string bookNo;unsigned units_sold;double revenue;S ...
- 修改程序配置文件 以及写一个结构体数组到文件(以及整数和结构体)
1.修改配置文件 这个mycp 是上一节的 这是TEST.config 代码需用到strstr 这个就是代码 结果这么写不对,缺点东西 改正完的结果是什么呢 ? 这个必须得打开文件 可不可以在外 ...
- C语言学生信息管理系统(结构体数组,文件)
C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷.在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码在 ...
- linux free函数头文件,Linux_Linux下malloc/free与new/delete的区别,由于malloc/free是库函数,不是 - phpStudy...
Linux下malloc/free与new/delete的区别 由于malloc/free是库函数,不是运算符,他们不能执行构造函数和析构函数,只是负责分配内存. 1.malloc与free是C++/ ...
- html预编译语句,头文件为啥加预编译语句
头文件为什么加预编译语句? typedef int ElementType; /* START: fig3_6.txt */ #ifndef _List_H #define _List_H struc ...
- c语言文件和结构体,C语言 文件操作 结构体与文件 fgetc fputc fread fwrite
#include #include /*C语言 将键盘输入的字符写入文件*/ int main(int argc, char* argv[]) { FILE *fp; //文件指针 char str1 ...
- 33. 使用fread()/fwrite()往文件中写入结构体,从文件中读出结构体
1 //读写结构体 2 #include <stdio.h> 3 typedef struct student 4 { 5 int num; 6 char name[30]; 7 char ...
- Linux的目录结构和头文件相关;哪里找- sys/types.h, sys/stat.h
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_29757283/article/ ...
- linux内核的I2C子系统详解2——关键结构体、关键文件
以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 3.I2C子系统的4个关键结构体 (1)struct i2c_adapter :I2C适配器 用来描述I2C控制器的, ...
- c语言读取文件到结构体数组,有关文件读写到结构体数组问题;
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 typedef struct IMG { char *name; int weight; int height; }IMG; 这是我的结构体存的是 图片的 ...
最新文章
- 2019最新版本的PanDownload纯净版,网盘满速下载和搜索神器,追剧和动漫新番必不可少的下载工具【亲测有效】
- VMware workstation安装
- Android View体系(十)自定义组合控件
- 50本.NTE、C#相关技术书籍免费下载
- [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式...
- 评论后的Ajax和刷新分页,Wordpress Ajax 评论分页/翻页 – Fatesinger
- linux系统需要备份吗,准备好了吗?请备份你的Linux系统
- 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
- Linux学习笔记(单用户模式,救援模式,克隆主机,两个linux互相连接)
- vue如何写原生js_纯技巧向:React, Vue, Rxjs 和原生 JS 代码大乱斗
- NLP --- 文本分类(基于概率的隐语意分析(PLSA)详解)
- Atitit 前端技术体系 目录 1. 基础系列	2 1.1. NUI CLI GUI	2 1.2. MVC WEBFORM PAGE模式 stage模式	2 2. 技术应用系列	2 2.
- 算法4_对称加密算法之SM4
- div内容上下左右居中
- 【OpenGL ES】FBO离屏渲染
- 在华为公司的项目总结
- 清华 计算机系 赵晟,来看看2010年清华大学自动化系录取名单本科毕业学校
- Apache Tomcat服务器安装配置和部署运行
- td自动换行时不切断英文单词
- matlab 变成圆形坐标,求圆和椭圆上任意角度的点的坐标