数据结构之线性表——约瑟夫环问题(循环链表的应用)
来源:互联网 发布:中科院自动化所 知乎 编辑:程序博客网 时间:2024/05/01 13:01
1 约瑟夫环问题描述:
约瑟夫环问题是循环链表的经典应用:具体描述如下:n 个人围成一个圆圈,首先第 1 个人从 1 开始一个人一个人顺时针报数,报到第 m 个人,令其出列。然后再从下一 个人开始从 1 顺时针报数,报到第 m 个人,再令其出列,…,如此下去,求出列顺序。
2 约瑟夫环问题求解
利用循环链表,根据游标在循环链表中的移动,依次输出元素的值,直到循环链表为空:这里借助上一篇的循环链表。这里直接给出约瑟夫问题的求解过程:
其中CircleList.h和CircleList.cpp在上一篇文章中给出
#include"CircleList.h"#include<stdio.h>#include<stdlib.h>struct Value{CircleListNode circlenode;//包含指针域节点int v;};//约瑟夫环问题int main(){int i = 0;CircleList * list = CircleList_Create();//创建链表struct Value v1, v2, v3, v4, v5, v6, v7, v8;v1.v = 1; v2.v = 2; v3.v = 3; v4.v = 4;v5.v = 5; v6.v = 6; v7.v = 7; v8.v = 8;CircleList_Insert(list, (CircleListNode *)&v1, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v2, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v3, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v4, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v5, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v6, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v7, CircleList_Length(list));CircleList_Insert(list, (CircleListNode *)&v8, CircleList_Length(list));for (i = 0; i < CircleList_Length(list); i++){//获取游标所指元素,然后游标下移struct Value* pv = (struct Value *)CircleList_Next(list);printf("%d ", pv->v);}printf("\n\n");//重置游标CircleList_Reset(list);while (CircleList_Length(list) > 0){struct Value *pv = NULL;for (i = 1; i < 3; i++){CircleList_Next(list);}pv = (struct Value *)CircleList_Current(list);printf("%d ", pv->v);CircleList_DeleteNode(list, (CircleListNode *)pv);//根据节点的值进行节点元素删除}printf("\n\n");CircleList_Destory(list);return 0;}
运行结果如下:
0 0
- 数据结构之线性表——约瑟夫环问题(循环链表的应用)
- 数据结构 循环链表的应用:约瑟夫环问题
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- JavaScript数据结构之单向循环链表应用-约瑟夫问题
- C++数据结构--循环链表的应用--解决约瑟夫问题
- 数据结构之循环链表的应用-约瑟夫游戏
- 数据结构 循环链表之约瑟夫问题
- 数据结构—线性表(约瑟夫环)
- 循环链表应用——约瑟夫环问题
- 菜鸟学习数据结构算法之路之约瑟夫环问题(循环链表)
- 线性表及其应用——约瑟夫环问题
- 循环链表应用之约瑟夫环
- 数据结构系列之链表——循环链表(约瑟夫环)
- C_线性表----约瑟夫环问题(循环链表)
- 程序员面试宝典之数据结构基础----循环链表(约瑟夫环问题)
- 约瑟夫环问题 【循环链表的应用】
- c语言数据结构之单向循环链表约瑟夫问题
- 循环链表的应用——约瑟夫环
- 内存优化
- 初学ES6(一) let和const
- TextView 最多显示2行,每行最多8个字,多余的显示....
- mysql ERROR 2027 (HY000): Malformed packet
- LeeCode 242. Valid Anagram
- 数据结构之线性表——约瑟夫环问题(循环链表的应用)
- 获取文件后缀的几种方式
- 天气推送服务器
- Delphi 用INI实现多语言界面的切换
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命
- Kali Linux USB Live Persistence模式
- Zookeeper系列(十四)Zookeeper开源客户端之Curator的Master/Leader选举
- c++ A+B
- python tornado motor 异步操作mongodb