数据结构(三):循环单链表解决约瑟夫问题
来源:互联网 发布:seo网站推广招聘 编辑:程序博客网 时间:2024/05/19 19:33
#include<iostream>using namespace std; //小孩结点类型 struct Child{ int no; //小孩编号 Child* next; //指针域,指向下一个指针};//设计运算算法class Joseph{ int n, m; Child *h; //首结点指针 public: Joseph(int n1, int m1) //构造函数, 建立有n1歌结点的循环单链表 { int i ; Child *p, *r; //r指向新建链表的尾结点 n = n1; m = m1; h = new Child(); h->no = 1; //先建立只有一个no为1 的结点的单链表 r = h; for(i = 2; i <= n; i++) { p = new Child();//建立一个新结点 p->no = i; //新结点存放编号i r->next = p; //将*p结点链接到末尾 r = p; //构成一个首结点为h的循环单链表 } r->next = h; } ~Joseph() //析构函数, 所有结点在出列时已释放 {} void Jsequence() //求约瑟夫序列 { int i , j; Child*p, *q; for(i = 1; i <= n; i++)//共出列n个孩子 { p = h; j = 1; while(j < m-1) //从*h结点开始报数, 报到第m-1个节点 { j++; //报数递增 p = p->next;//移到下一个结点 } q = p->next; //q指向第m个结点 cout << q->no << " ";//该节点的小孩出列 p->next = q->next; //删除*q结点 delete q; //释放其空间 h = p->next; //从下一个结点从新开始 } } }; int main() { int n = 6; int m = 5; Joseph obj(n,m); cout << "n = " << n << " , m = " << m << " 的约瑟夫序列:"; obj.Jsequence(); cout << endl; return 0; }
0 0
- 数据结构(三):循环单链表解决约瑟夫问题
- c++ 数据结构 用循环单链表解决约瑟夫问题
- 数据结构三:循环链表解决约瑟夫问题实现
- 实战数据结构(4)_循环单链表解决约瑟夫问题
- 约瑟夫问题 循环单链表解法
- 使用循环单链表解决约瑟夫环问题
- 用循环单链表解决约瑟夫问题
- 使用循环单链表解决约瑟夫环问题
- 3.10 约瑟夫环问题--循环单链表解决
- 【数据结构】循环链表解决约瑟夫环问题
- 循环链表解决约瑟夫问题
- 循环链表解决约瑟夫环问题
- 循环链表解决约瑟夫环问题
- 用循环链表解决约瑟夫问题
- 用循环链表解决约瑟夫问题
- 循环链表解决约瑟夫环问题
- POJ3750 循环链表解决约瑟夫问题
- 循环链表解决约瑟夫环问题
- nodejs CURD(增删改查)get和post方法
- spring教程--事务管理
- 移动端横竖屏问题--兼容iPhone、Android
- 基于51单片机的LCD1602液晶驱动实现
- Google Test测试框架自带Sample案例注释翻译
- 数据结构(三):循环单链表解决约瑟夫问题
- cookie的详情
- Learning Spark——使用Intellij Idea开发基于Maven的Spark程序
- 如何避免SSH Secure Shell Client连接Linux超时,自动断开?
- Scala 并发编程
- C# 方法记录
- java中String的比较注意事项
- Dubbo学习笔记(一)
- Android学习(1)