#include <iostream>
using namespace std;
typedef struct Node{
int num,pwd;
struct Node *next;
}Node,*LinkList;
LinkList getnode(int n)
{
//head为开头指针,tail为末尾指针,p为当前指针的前一个指针,q为当前指针.
LinkList head,tail,p,q;
int i;
head=new Node;
p=head;
for(i=1;i<n;i++)
{
q=new Node;
p->next=q;
p=q;
} //建立一个n个结点的链表.
tail=q;
tail->next=head;
p=head;
for(i=1;i<=n;i++)
{
p->num=i;
cout<<"Please enter No."<<i<<"'s password:";
cin>>p->pwd;
p=p->next;
} //输入个人持有密码.
return head;
}
void display(Node *p, int n, int m)
{
int i,j;
LinkList q;
for(i=0;i<n;i++)p=p->next;
for(i=1;i<=n;i++)
{
for(j=1;j<m;j++)p=p->next;
q=p->next;
m=q->pwd;
if(i==n)
{
cout<<q->num<<endl;
break;
}
cout<<q->num<<" ";
p->next=q->next;
delete q;
} //输出序列
}
int main()
{
int m=0,n=0; //m为初始密码,n为人数.
cout<<"Please enter m=";
cin>>m;
cout<<"Please enter n=";
cin>>n;
LinkList head; //head为开头指针.
head=getnode(n);
cout<<"result:"<<endl;
display(head,n,m);
return 0;
}