⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 y.cpp

📁 用c++写的约瑟夫环 可任意输入报数上限与密码
💻 CPP
字号:
#include <iostream>           
using namespace std;
typedef int ElemType;
typedef struct LNode{                   //定义结构
ElemType  data;
ElemType   num;
struct LNode *next;
}LNode,*LinkList;
void del(LinkList &L,LinkList p)                //删除找到的节点
{
   LinkList q;
   for(q=L;q->next!=p;q=q->next);         //令q指向L,当q的下一个为p时停止,否则q指向q的下一个
   q->next=p->next;                  //找到p,令q指向的节点next指向p的下一个节点
   delete p;                      //释放p的空间
}     
int putin(LinkList &L,int e)          //按顺序输入密码,
{ 
    LinkList p;
     int a;
     cout<<"请按顺序输入密码"<<endl;
     cin>>a  ;                                  //插入第一个数据
     LinkList s;                  
      s=new LNode;if(!s)return 0;                 //获取空间
      L=s;s->data=a;s->num=1;                    //头指针指向空间并赋值
      p=L;                     //辅助指针指向第一个元素
     for(int i=1;i<e;i++)                       
     {       
		   cin>>a;
           s=new LNode;if(!s)return 0;
           p->next=s;p=s;                    //让p的next指向新的节点,并让p重新指向这个节点
           s->data=a;s->num=i+1;             //给节点赋值
	 }
      s->next=L;                         //让节点的next指向头节点
     return 0;
}
int getout(LinkList &L,int &f)
{
   LinkList p;                                //定义辅助指针
   int i; p=L;                                  //i用来控制循环次数
   if(!L)return 0;            //判空
   for(i=1;i<f;i++)              //其它情况
   { p=p->next;  }                  //找到节点
   f=p->data;                     //用f取得密码重新作为报数上限
   cout<<p->num<<"  ";            //输出号码
   L=p->next;                     //将头指针指向找到的元素的下一个
   del(L,p);                      //释放找到的节点的空间
   return 0;
}  
int main()                        //主函数
{
   LinkList L;
   int m,n;
   cout<<"请输入报数上限,大于零"<<endl;
   cin>>m;cout<<endl;
   cout<<"请输入人数"<<endl;
   cin>>n;cout<<endl;
   if(m<=0||n<=0)return 0;
   putin(L,n);
   cout<<"结果"<<endl;
   for(int i=1;i<=n;i++)
   {getout(L,m);}
}  


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -