📄 tigaoti.cpp
字号:
#include<iostream.h>
class cirList;
class cirNode
{
friend class cirList;
int data;
cirNode *link;
public:
cirNode(int d) { data=d;link=0; }
};
class cirList
{
cirNode *first,*current,*last;
public:
cirList() { first=current=last=0; }
void Insert(int value);
void Remove(int i);
void j(int n,int s,int m);
void print();
};
void cirList::Insert(int value)
{
cirNode *p=new cirNode(value);
if(first==0)
{
first=last=current=p;
last->link=first;
}
else
{
p->link=first;
last->link=p;
current=last=p;
}
}
void cirList::Remove(int i)
{
cirNode *p=first,*q;int k=0;
while(p!=0&&k<i-1)
{
p=p->link;k++;
}
if(i==0)
{
q=first;current=first=first->link;
last->link=first;
}
else
{
q=p->link;
current=p->link=q->link;
if(q==last)
{
last=p;
current=last->link=first;
}
}
delete q;
}
void cirList::j(int n,int s,int m)
{
current=last;int v=n;
for(int i=0;i<s;i++)
current=current->link;
while(n>0)
{
int h=0;
for(i=0;i<m-1;i++)
current=current->link;
cout<<current->data<<" ";
cirNode *p=first;
while(p!=current)
{
p=p->link; h++;
}
Remove(h);
n--;
}
}
void cirList::print()
{
current=first;
while(current->link !=first)
{
cout<<current->data<<" ";
current=current->link;
}
cout<<last->data<<endl;
}
void main()
{
int n,s,m;char k;
loop: cout<<"请输入人数: ";
cin>>n;cout<<endl;
cout<<"请输入从第几人开始 :";
cin>>s;cout<<endl;
cout<<"请输入限制数 :";
cin>>m; cout<<endl;
if(n<1||n<s||n<m||s<1||m<1)
{
cout<<"ERROR!"<<endl;
goto loop;
}
else
{
cirList a;
for(int i=0;i<n;i++)
a.Insert(i+1);
a.print();
a.j(n,s,m);
}
cout<<"你想再测验一次吗?如果是请输入y,要不需要请输入n结束.";
cin>>k;
if(k=='y')
goto loop;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -