栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【BUCT数据结构类库】1.4--约瑟夫问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【BUCT数据结构类库】1.4--约瑟夫问题

#include
#include
using namespace std;

// 约瑟夫问题
//循环链表
typedef struct node{
    int data;
    node *next;
}*linklist;

// 初始化循环链表
void init_linklist(linklist &L){
   L=new node;
   L->next=L;
}

// 判断循环链表是否为空
bool is_empty(linklist L){
    return L->next==L;
}

// 在循环链表L的第i个位置插入元素e(i=1时,插入在链表头)
void insert_linklist(linklist &L, int i, int e){
    linklist p=L;
    linklist s=new node;
    s->data=e;
    s->next=NULL;
    if(i==1){
        L->data=e;
    }else{
        for(int j=1;jnext;  
        }
        s->next=p->next;
        p->next=s;
    }
}


int main(){
    linklist L;
    init_linklist(L);
    int num,interval;
    int kill=0;
    cin>>num>>interval;
    for(int i=1;i<=num;i++){
        insert_linklist(L,i,i);
    }
    linklist p=L;
    while (p->next!=L)
    {
        p=p->next;
    }
    cout<<"不幸遇难的人为:";
    while(p->next!=p){
        if(kill==num-interval){
            cout<<"存活的人为:";
           while(interval--){
               cout<data<<" ";
                p=p->next;
           }
           return 0;
        }
        for(int i=1;i<=interval;i++){
            p=p->next;
        }
        cout<next->data<<" ";
        kill++;
        p->next=p->next->next;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号