开发工具:
文件大小: 2kb
下载次数: 0
上传时间: 2019-01-12
详细说明:#include "stdafx.h"
#include
using namespace std;
//声明结构:作为链表的节点
struct Monkey
{
//数据域
int Num = 0;
//指针域
Monkey *Mk = NULL;
};
//声明子函数:实现生成链表,k为个数
Monkey *Create(int k);
//子函数声明:链表输出;
void Output(Monkey *Head);
//将链表形成循环链表,即tail的指针指向开始位置;
void Cricle(Monkey *&Head;,int n);
//声明子函数实现循环链表例按照报数为m的出列剩下最后一个大王;
void Check(Monkey *Head, int m);
int main()
{
//声明头指针,作为链表的头;
Monkey *head = NULL;
int n = 8;//猴子个数
int m = 3;//规则数:报到3的猴子出列取消猴王权利;
//①生成节点为8的链表;
head = Create(n);
//②输出结果检查;
Output(head);
//③将链表形成循环链表;
Cricle(head, n);
//Output(head);//检验是否形成了循环链表;
//④猴王选举,并输出猴王;
Check(head, m);
return 0;
}
//编译生成链表子函数,这里采用*Ge,Ge和形参指向相同的地址,修改后面的有效;
//另外Ge可以修改为别的地址,而不影响形参的指向。
Monkey *Create(int k)
{ //猴子数为零;
if (k == 0)
return NULL;
//猴子数不为零;
Monkey *p = NULL, *q = NULL;
Monkey *Head = NULL;//用于储存待返回的表头;
//先建立一个;
p = new Monkey;
p->Num = 1;
Head = p;
for (int i = 2; i <= k; i++)
{
q = new Monkey;
q->Num = i;
p->Mk = q;
p = q;
}
return Head;
}
//子函数编译:输出链表结构;
void Output(Monkey *Head)
{
int i = 1;//用于链表结点编号;
while (Head != NULL)
{
cout << "猴子的编号是:" << Head->Num << endl;
cout << "这只猴子的指针域值为" << Head->Mk << endl;
Head = Head->Mk;
i++;
}
return;
}
//子函数编译:将链表形成循环链表,即tail的指针指向开始位置;
void Cricle(Monkey *&Head;,int n)
{
Monkey *p = Head;
for (int i = 1; i <= (n-1); i++)
{
p = p->Mk;
}
//此时p指向第n个节点;
p->Mk = Head;
}
//子函数编译:按照规则数选出猴王;
void Check(Monkey *Head, int m)
{
Monkey *p = NULL, *q = NULL;
q = Head;
while (Head != Head->Mk)//检查是否只剩下一个猴子;
{
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.