约瑟夫环c语言程序完整版,C语言:约瑟夫环问题(源代码)
本帖最后由 geige 于 2015-7-26 00:48 编辑
#include
#include
struct stu //构建一个新的数据类型
{
int num;
struct stu *next;
};
struct stu *createlist(int n); //函数声明
int main()
{
struct stu *head,*p,*temp; //定义头指针,以及中间指针temp,用来删除节点
int n,m,i,j=1,flag=0;
printf("Please input n and m:\n");
scanf("%d%d",&n,&m);
head=createlist(n); //调用函数来创建链表并返回头指针赋值给head
p=head->next; //将首节点的地址赋值给p
if(m==1) //如果m等于1,直接按顺序输出
{
while(p!=NULL)
{
printf("%d ",p->num);
p=p->next;
}
putchar('\n');
}
else
{
while(n!=1)
{
for(i=1;i<=n;i++)
{
if(p!=NULL)
{
if(j==m)
{
printf("%d ",p->num);
if(p==head->next)
head->next=p->next; //如果删除的是首结点,那么将第二个节点作为首节点
temp->next=p->next;
p=temp->next;
j=1;
flag++;
}
else
{
j++;
temp=p;
p=p->next;
}
}
}
n=n-flag; //退出的人数要减去
flag=0;
p=head->next; //将首节点重新赋给p
}
printf("%d\n",temp->num); //输出最后一个数
}
free(p); //释放内存
return 0;
}
struct stu *createlist(int n)
{
int i;
struct stu *phead=(struct stu*)malloc(sizeof(struct stu)),*ptail; //申请头结点
if(phead==NULL)
{
printf("Not able apply for memory !\n");
return 0;
}
ptail=phead; //
ptail->next=NULL; //将头结点的下一个地址置空
for(i=1;i<=n;i++)
{
struct stu *pnew=(struct stu*)malloc(sizeof(struct stu)); //开辟新的节点
if(pnew==NULL)
{
printf("Not able apply for memory !\n");
return 0;
}
pnew->num=i;
ptail->next=pnew;
pnew->next=NULL;
ptail=pnew; //节点前移
}
return phead; //返回头指针
}
约瑟夫环c语言程序完整版,C语言:约瑟夫环问题(源代码)相关推荐
- java约瑟夫环pta上_cdoj525-猴子选大王 (约瑟夫环)
约瑟夫斯问题问题有时候也被描述成猴子选大王问题,题目如下.(最后会贴上约瑟夫问题的来历) 一群猴子排成一圈,按1,2,-,n依次编号. 然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再 ...
- c语言删除双向链表重复元素,求一个双向链表的建立,插入删除的c语言程序完整版的,借鉴一下思想,再多说一下就是能运行的那种...
最佳答案 //链表的操作编辑 //线性表的双向链表存储结构 typedef struct DuLNode { ElemType data; struct DuLNode *prior,*next; } ...
- 约瑟夫环(c语言程序完整版)
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列: ...
- 和尚吃馒头c语言程序,(八十一)约瑟夫环/鲁智深吃馒头
问题:99个人,99个馒头,来了一个鲁智深,找个位置把他放进去,然后每逢五的人,吃一个馒头,并且退场,最后让他无法吃. 代码: #include int main() { using namespac ...
- 约瑟夫环数据结构c语言程序,数据结构的C语言(类C语言)--单向循环链表--约瑟夫环...
代码区 约瑟夫环:用类C语言实现!!!可以成功运行!!!不是仅仅的算法,而是实实在在的类C #include #include typedef int ElemType; typedef struct ...
- 程序员面试系列——约瑟夫环
约瑟夫斯问题(Josephus Problem) 约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为"约瑟夫环",也 ...
- # R语言——约瑟夫环
约瑟夫环: n个人围成一个圈,从第一个人点名,每数到第三个人,这个人移出圈外, 依次类推,求最后留下来的人编号是? 思路:每次循环重新编码序号作为names,并根据names 进行筛选 拓展:约瑟夫环 ...
- 约瑟夫环c语言代码 指针,约瑟夫环C语言实现源代码(1)
前天笔试有个约瑟夫环的问题,怪不得人家没通知我面试,原来我的约瑟夫环做的确实有问题,昨天晚上又重新做了下,下面上源代码: /* file:osephu.cpp author:www.5dkx.com ...
- c语言学生作业ppt课件怎么做,C语言课件完整版(精华).ppt
<C语言课件完整版(精华).ppt>由会员分享,可在线阅读,更多相关<C语言课件完整版(精华).ppt(484页珍藏版)>请在人人文库网上搜索. 1.1,计算机程序设计基础(C ...
最新文章
- 如何设置windows下xampp的phpMyAdmin外网访问?
- Yuhao and a Parenthesis
- 盘一盘2021全球流量最高的网站~
- BackTrack5 安装中文输入法
- Android 简单实现订单模块类APP的物流详情页
- CSS: hover选择器的使用
- Linux shell编程学习总结
- 怎么把竖列中的数相加python_使用python将另一列的列和总和内容分组
- SQL Server 2000企业管理器中MMC无法创建管理单元的解决方法
- python列表添加对象_python list append命令 添加对象
- 第一部分 线程APIs(Thread APIs)线程和运行(Threads and Runnables)
- Centos7 下Jenkins 安装
- /proc/sysrq-trigger的使用
- final关键字多态
- 今日头条的排名算法_今日头条的推荐算法原理分析
- 关于虚拟机中的HWADDR和MACADDR地址
- Steam云状态无法同步怎么办?
- javaweb企业员工考勤管理系统案例
- 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
- 江苏移动MGV3000-YS(S)/YS(M)-S905L3卡刷和线刷固件包