#include
using namespace std;
#include
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
void InitList(LinkList &L)
{
L=new LNode;//或L=(LinkList)malloc(sizeod(LNode));
L->next=NULL;
}
void CreateList(LinkList &L,int n)//尾插法构造循环列表
{
int i;
LinkList p,r;
r=L;
for(i=1;i<=n;i++)
{
p=new LNode;
p->data=i;
p->next=NULL;
r->next=p;
r=p;
}
r->next=L->next;
}
void Josephus(LinkList &L,int m,int k)
{
int i;
LinkList p,q;
p=L;
for(i=0;inext;//找到第k-1个
while(p->next!=p)
{
for(i=1;i<=m-1;i++)p=p->next;//往后走m-1个为p
q=p->next;//p后为q
p->next=q->next;//p;连接q的下一个
cout<data<<"号出局"<data<<"号胜利"<>n;
cout<<"从第几个人开始报数:";
cin>>k;
cout<<"报数为几的人出局:";
cin>>m;
CreateList(L,n);
Josephus(L, m, k);
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!