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 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧