zoukankan      html  css  js  c++  java
  • 约瑟夫环之链表实现 C++实现

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    struct node{
      int x;
      //号码
      int data;
      //密码
      struct node * next;
      //下一个节点
    };
    typedef struct node *Link;
    Link head =(Link)malloc(sizeof(Link));
    //定义到全局,少写几个指针
    void crea_list(int m){
      //M人数
      Link p=(Link)malloc(sizeof(Link));

      head=p;
      int i=1;
      while(m--){
        Link q=(Link)malloc(sizeof(Link));
        q->x=i;
        //号码从一遍历
        cin>>q->data;
        //密码要求输入
        p->next=q;
        p=p->next;
        i++;
      }
     p->next=head->next;
     //封闭
    }

    int main(){
      int n,m;
      cin>>n>>m;
      crea_list(n);
      Link temp=head;
      int i=1;
      while(temp->next!=temp->next->next){
        if(i==m){
          Link q=temp->next;
          temp->next=temp->next->next;
          i=1;
          //初始报数
          m=q->data;
          //重新赋值M
          cout<<q->x<<' ';
          //输出出来的序列
          free(q);
          //解放多余的空间
        }else{
          i++;
          temp=temp->next;
          //报数到下一个人
        }
      }
      cout<<temp->x;
      //最后一个没有输出来,特殊处理
      return 0;
    }
    这是数据结构老师,在课上布置的小问题,写来玩玩,嘻嘻嘻

  • 相关阅读:
    「CodeForces
    「POJ
    「CodeForces
    「CodeForces
    【CodeForces 717C】Potions Homework
    【CodeForces 730H】Car Repair Shop
    【CodeForces 730H】Delete Them
    【Gym 100947I】What a Mess
    j
    PDE工具箱的简单使用
  • 原文地址:https://www.cnblogs.com/yusuph/p/13774261.html
Copyright © 2011-2022 走看看