059.约瑟夫环

简介: 059.约瑟夫环
#include <stdio.h>
#include <malloc.h>
#define  N 7                                         //定义N=7,表示有7个链表单元
#define  OVERFLOW  0
#define  OK  1
typedef struct LNode{                              //定义链表结构
  int password;
  int order;
  struct LNode *next;
}LNode,*LinkList;
int  PassW[N]={3,1,7,2,4,8,4};
void  Joseph(LinkList p,int m,int x);          //声明函数
int main()
{    
  int  i,m;
  LinkList  Lhead,p,q;     //定义三个指向链表结构的指针
  Lhead=(LinkList)malloc(sizeof(LNode));  //初始化头节点
  if(!Lhead)return OVERFLOW;                   //分配空间失败返回
  Lhead->password=PassW[0];
  Lhead->order=1;
  Lhead->next=NULL;
  p=Lhead;
  for(i=1;i<7;i++){
    if(!(q=(LinkList)malloc(sizeof(LNode))))return OVERFLOW;
    q->password=PassW[i];                      //初始化循环列表中的密码值
    q->order=i+1;
    p->next=q;p=q;                 //新创建一个指针节点并使p->next指向它,再使p=q
  }
  p->next=Lhead;                        //使p->next指向头节点,从而形成循环链表
  printf("请输入第一次计数值m:  \n");
  scanf("%d",&m);                                      //用户输入第一次计数值m
  printf("第一次计数值m= %d \n",m);
  Joseph(p,m,N);
    return OK;
}
void  Joseph(LinkList p,int m,int x){
  LinkList q;
  int i;
  if(x==0)return;                          //链表中没有节点的话,立即返回上一层函数
  q=p;
  m%=x;                                  //m对x求余,从而求出链表中的第几个单元是所求节点
  if(m==0)m=x;               //若m刚好可以整除x,则令m=x,因为如果m=0,则不进行下一个
  //for循环,那样就无法使q指向要删除节点,p指向他的的前一节点,那样则无法进行删除操作  
  for(i=1;i<=m;i++){
    p=q;
    q=p->next;                    //使q指向要删除的节点,p指向q的前一个节点
  }
  p->next=q->next;                              //从循环链表中删除q指向的节点
  i=q->password;
  printf("%d  ",q->order);                     
  free(q);                                        //释放q指向的空间
  Joseph(p,i,x-1);
}
相关文章
|
9月前
|
网络协议 安全
一个可以运行的vsftp.conf
该配置文件为VSFTPD服务器设置,禁用匿名访问,启用本地用户访问和写入权限,设置umask为022。监听IPv6,关闭监听IPv4,使用20端口连接,被动模式端口范围10050-10060,允许可写chroot,启用TCP Wrappers安全控制。根目录设为/var/www。
138 16
|
存储 数据采集 人工智能
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
589 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
233 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
827 60