weixin_33603236 2016-03-22 16:21 采纳率: 0%
浏览 1246

用c++打的约瑟夫环,为什么总是过不了

#include
using namespace std;
template
struct linknode{
T data;
linknode* link;
linknode(T d,linknode* 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 i,T& x);
void remove(int i,T& 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 i,T& x){
linknode* p=new linknode(x);
linknode* q=locate(i-1);
p->link=q->link;
q->link=p;
}
template
void list::remove(int i,T& x){
linknode* p=locate(i-1);
x=p->link->data;
linknode* q=p->link;
p->link=q->link;
delete q;
}
template
void yuese(list& a,int m,int 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 m,n;
cout<<"请输入m,n的值"< cin>>m>>n;
for(int i=2;i<=n;i++)
a.insert(i,i);
for(int i=1;i<=n;i++){
cout<data<<endl;
}
yuese(a,m,n);
return 0;
}

  • 写回答

2条回答

  • threenewbee 2016-03-22 23:04
    关注
     linknode* first=new linknode(x);
    ->
    first=new linknode<T>(x);
    
    你画蛇添足了,定义了一个局部变量也叫first,导致成员变量的first指针没有赋值。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘