| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 564 人关注过本帖
标题:【求助】猴子选大王 代码中的一个问题
收藏  订阅  推荐  打印 
烈性炸药
Rank: 1
等级:新手上路
帖子:13
积分:242
注册:2007-11-6
【求助】猴子选大王 代码中的一个问题

一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王
//link.h
template <class T>
struct node{
    T data;
    node<T> *next;
};
//猴子选大王.cpp
#include<iostream.h>
#include"link.h"//引入头文件
void init_list(node<int> *first,int m)
{
    //生成m个节点的循环链表
    node<int> *p,*q;
    p=first;
    p->data=1;
    for(int i=2;i<=m;i++){
        q=new node<int>;
        p->next=q;
        p=q;
        p->data=i;
        p->next=first;
    }
}
void main()
    {
    int m,n,l;
    cout<<"请输入猴子的个数:";
    cin>>m;
    cout<<"请输入N:";
    cin>>n;
    node<int> *first;
    first=new node<int>;
    first->next=first;
    init_list(first,m);
    node<int> *p,*q;
    q=new node<int>;
    p=new node<int>;
    p=first;
    while(p->next!=p)
    {
    //循环的终止条件为链表只剩一个节点
    for(int i=1;i<n;i++)
    {
    if(i==n-1)                                                //就是这里,为什么不是i==n呢?高手指点下!!!!谢谢!!!
    q=p;
    p=p->next;
    }
        p=p->next;
        q->next=p;
    }
    cout<<"成为大王的猴子为第"<<p->data<<"个"<<endl;
}

[[italic] 本帖最后由 烈性炸药 于 2008-1-2 12:31 编辑 [/italic]]
搜索更多相关主题的帖子: 大王  猴子  代码  
2008-1-2 12:24
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048337 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved