问题描述及代码:
/*现有N位旅客同乘一条船,遇到风暴只有k名乘客可以幸存,无奈大家只能进行生死游戏,
N位旅客围城一圈,从第S个人开始依次报数,顺时针报M的人出局,再由下一个人开始报
数,逆时针数到第W人出局。在从他逆时针的下一个人数起,顺时针数M人.如此循环,直
到剩下K个乘客为止*/
1.cpp:
#include<iostream>
#include"1.h"
using namespace std;
/*******************
Node类的构造函数,初始化结点数据
********************/
Node::Node()
{
data=0;
prior=NULL;
next=NULL;
}
/**************
Linklist类的构造函数,初始化首节点数据
*****************/
Doublelist::Doublelist()
{
Head=NULL;
}
/*********************
建立双向循环链表
************************/
void Doublelist::Creatlist(Doublelist &L)
{
cout<<"请输入双向生死游戏的总人数N:";
int n;
cin>>n;
Node *p,*s;
for(int i=1;i<=n;i++)
{
p=new Node;
p->data=i;
p->next=NULL;
if(i==1)
{
L.Head=p;
p->prior