| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:约瑟夫单循环链表的c++实现
只看楼主 加入收藏
yoyolive
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-10-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
约瑟夫单循环链表的c++实现
哪位可以帮下
搜索更多相关主题的帖子: 链表 单循环 约瑟夫 
2010-10-17 03:14
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:20 
程序代码:
#include <iostream>
using namespace std;
template <class T>
class Node
{
public:
    T  element;
    Node<T> *link;
    Node(T elem=0,Node<T>* lk=0):element(elem),link(lk)
    {}
    template <class T> friend void Josephus(Node<T>*& first, int m);
};


template <class T>
void Josephus(Node<T>*& first, int m)
{
    Node<T> *q=first,*p=first;
    while(p&&p!=p->link)
    {
        for(int i=1;i<m;q=p,p=p->link)
            i++;
        cout<<p->element<<"  ";
        q->link=p->link;
        delete p;p=q->link;
    }
    if(p)
    {
        cout<<p->element<<"  ";
        delete p;
    }
    first=NULL;
}

int main()
{
    int s,n;
    cout<<"请输入人数:";
    cin>>n;
    cout<<"请输入间隔:";
    cin>>s;
    Node<int> *u=new Node<int>(1,0);
    u->link=u;                               //构成循环链表
    Node<int> *q=u;
    for(int i=2;i<=n;i++)
    {
        q->link=new Node<int>(i,q->link);
        q=q->link;
    }
    Josephus(u,s);
    cout<<endl;

}

If You Want Something, Go Get It, Period.
2010-10-17 09:09
快速回复:约瑟夫单循环链表的c++实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011844 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved