当前位置: 首页 > news >正文

约瑟夫环 - f

一、笔记:
单向循环链表,表头只记录头和尾的值,不再链表的循环中;
在进行游戏时,需要找到单向链表要删除的前一个节点和自己,以便于链表能够连接上循环起来;
二、头文件Joseph.h:

#pragma oncetypedef int Element_t;typedef struct _node {Element_t val;struct _node* next;
}node_t;typedef struct {node_t* head;node_t* tail;
}Joseph_t;void initJosephGame(Joseph_t* header,int n);
void showJoseph(const Joseph_t* header);
void startGame(Joseph_t *header,int m);

三、源文件Joseph.c:

#include<stdio.h>
#include<stdlib.h>
#include"Joseph.h"void initJosephGame(Joseph_t* header, int n) {node_t* new_node;for (int i = 1; i <= n; i++) {new_node = malloc(sizeof(node_t));if (i == 1) {header->head = new_node;header->tail = new_node;}else {header->tail->next = new_node;header->tail = new_node;}new_node->next = header->head;new_node->val = i;}
}
void showJoseph(const Joseph_t* header) {node_t* pos = header->head;do {printf("%d\t", pos->val);pos = pos->next;} while (pos != header->head);printf("\n");
}
void startGame(Joseph_t* header, int m) {node_t* pre = NULL;node_t* cur = header->head;while(cur->next!=cur){//报数,要删除元素,需要找到前驱节点,保证链表的连接for (int i = 1; i < m; ++i) {pre = cur;cur = cur->next;}//删除pre->next = cur->next;printf("%d\t", cur->val);free(cur);cur = pre->next;}printf("have %d number!\n", cur->val);header->head = header->tail = cur;}

四、运行文件main.c:

#include"Joseph.h"
#include<stdio.h>void test01() {//记得初始化Joseph_t header = { NULL,NULL };initJosephGame(&header, 7);printf("************************\n");showJoseph(&header);printf("************************\n");startGame(&header, 2);printf("************************\n");//开始游戏只剩下一个元素之后,记得修改表头的值showJoseph(&header);
}
int main(){test01();return 0;
}
http://www.jsqmd.com/news/345047/

相关文章:

  • DHTML使用技巧指南:掌握动态网页核心技术
  • 2026金属丝网厂家推荐:四川鑫朋浩领衔,全品类供应品质优选 - 深度智识库
  • 盐城市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 软件测试面试常见问答题2
  • 盐城市英语雅思培训机构推荐/2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 镇江市英语雅思培训机构推荐:2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 像经济学家一样思考:核心逻辑与决策指南
  • 盐城市英语雅思培训机构推荐、2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 2026年评价高的深圳送水/农夫山泉深圳送水家庭用户推荐 - 行业平台推荐
  • 支付宝红包套装新手全攻略,从兑换到使用一步到位 - 团团收购物卡回收
  • shell脚本if条件判断写法详解,避坑指南
  • 镇江市英语雅思培训机构推荐、2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 【超全收藏】网络安全小白入门到精通:转行指南+学习路线+资源包分享
  • 网络安全干货之特洛伊木马,零基础入门到精通,收藏这一篇就够了
  • 从车间到云端:基于Node-RED与Python的轻量级边缘AI方案
  • 怎么用SSH从git init 把本地任务推送到GitCode上?
  • 聚焦CPVC排水解决方案:2026五大PVC-C管材服务商实力排行 - 深度智识库
  • 多平台文章自动同步助手插件,发文提效工具——开源免费推荐
  • 新手必看,一文读懂京东E卡的使用与变现误区 - 团团收购物卡回收
  • 从理论到实践:Node-RED性能优化的完整案例解析
  • 分析煤器费用排行,山东满昌锅炉省煤器价格合理是真的吗 - 工业设备
  • 2026 邮件系统厂家推荐:智能运维与行业定制 - 品牌推荐排行榜
  • 京东E卡实用全指南,从使用技巧到闲置避坑 - 团团收购物卡回收
  • 沃尔玛购物卡回收如何实现用户与平台的双赢 - 团团收购物卡回收
  • 嵌入式开发:大幅降低Python内存占用的核心方法
  • 2026年音乐喷泉选型权威指南:水幕电影、景区灯光秀全维度解析 - 深度智识库
  • 盐城市英语雅思培训机构推荐;2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 从云端到边缘:YOLOv8模型轻量化与RK3588J部署避坑指南
  • 别踩坑!支付宝红包套装这5个误区,很多人都中招了 - 团团收购物卡回收
  • 从京东E卡回收热潮,看当代人消费观念的转变 - 团团收购物卡回收