问题描述
- 用c++打的约瑟夫环,为什么总是过不了
- #include
using namespace std;
template
struct linknode{
T data;
linknode* link;
linknode(T dlinknode* next=NULL):data(d)link(next){}
};
template
class list{
public:
list(T x){
linknode* first=new linknode(x);
first->link=first;
}
~list(){
linknode* q;
q=first->link;
while(q!=first){
first->link=q->link;
delete q;
q=first->link;
}
delete first;
}
linknode* locate(int i);
void insert(int iT& x);
void remove(int iT& x);
linknode* first;
linknode* last;
};
template
linknode* list::locate(int i){
linknode* p=first;
if(i==0){
for(int j=1;p->link!=first;j++){
p=p->link;
}
return p;
}
for(int j=1;j<=i;j++){
p=p->link;
if(p==first)
return NULL;
}
return p;
}
template
void list::insert(int iT& x){
linknode* p=new linknode(x);
linknode* q=locate(i-1);
p->link=q->link;
q->link=p;
}
template
void list::remove(int iT& x){
linknode* p=locate(i-1);
x=p->link->data;
linknode* q=p->link;
p->link=q->link;
delete q;
}
template
void yuese(list& aint mint n){
linknode* p=a.first;
linknode* q;
for(int i=1;i<=n-1;i++){
int count=1;
while(1){
count++;
if(count==m){
q=p->link;
cout<data< if(q==a.first){
a.first=q->link;
}
p->link=q->link;
delete q;
break;
}
p=p->link;
}
}
cout<<""the winner is ""<data<}
int main(){
list a(1);
int mn;
cout<<""请输入mn的值""< cin>>m>>n;
for(int i=2;i<=n;i++)
a.insert(ii);
for(int i=1;i<=n;i++){
cout<data<<endl;
}
yuese(amn);
return 0;
}
解决方案
linknode* first=new linknode(x);->first=new linknode<T>(x);你画蛇添足了,定义了一个局部变量也叫first,导致成员变量的first指针没有赋值。
解决方案二:
猴子选大王——CSharp数组
时间: 2024-11-05 16:36:31