zoukankan      html  css  js  c++  java
  • 约瑟夫环问题(c++)

    #include <iostream>
    
    struct node{
        int payload;
        node* next;
        node(int payload){this->payload = payload;}
    };
    
    class joseph_circle{
        node* tail;
        node* eliminate_ptr;
    public:
        joseph_circle(){tail =nullptr;}
        void add(int value){
            if(tail ==nullptr){
                tail= new node(value);
                tail->next = tail;
            }else{
                node* new_node = new node(value);
                new_node->next = tail->next;
                tail->next = new_node;
                tail = new_node;
            }
        }
    
        void eliminate(int step){
            node* p = tail;
            while(p!=nullptr && p->next!=p){
                for(int i=0;i<step-1;i++){
                    p =p->next;
                }
                node* eliminated_node = p->next;
                p->next = p->next->next;
                if(eliminated_node ==tail)
                    tail =p;
                std::cout << "deleting:" << eliminated_node->payload << std::endl;
                delete eliminated_node;
                output();  
            }
        }
    
        void output(){
            node* p = tail;
            while(p != nullptr){
                p=p->next;
                std::cout << p->payload << " ";
                if(p==tail)
                    break;
            }
            std::cout << std::endl;
        }
    };
    
    int main(){
        joseph_circle circle;
        for(int i=0;i<6;i++){
            circle.add(i);
        }
        circle.eliminate(3);
        system("pause");
        return 0;
    }
  • 相关阅读:
    北航算法作业三
    水库抽样
    python命名空间
    我说
    Fn键
    windows批处理运行java程序
    Java Sound初探
    java.io.IOException: mark/reset not supported
    三层交换机对链路层数据帧的处理
    北航数值分析作业三
  • 原文地址:https://www.cnblogs.com/zychengzhiit1/p/5789485.html
Copyright © 2011-2022 走看看