约瑟夫问题(循环链表)
来源:互联网 发布:阿里云仓 编辑:程序博客网 时间:2024/05/23 19:16
#include<stdio.h>
#include<stdlib.h>
typedef struct s
{
int a;
struct s *next;
}ss; //建立节点
ss*creat(int n) //建立循环链表的函数
{
int i = 1;
ss*head,*p,*s;
head = (ss*)malloc(sizeof(ss));
head->a = 1;
p = head;
while(--n)
{
s = (ss*)malloc(sizeof(ss));
s->a = i+1;
p->next = s;
p = s;
i++;
}
p->next = head; //首尾相连
return(head); //返回“头”指针
}
void print(ss*head,int n,int m,int k) //依次出局函数
{
int j;
int k2 = k;
ss*p,*s;
p = head;
for( ; --m ; s = p , p = p->next); //找到第一次报数的位置
for(j=0;j<n;j++) //循环n次
{
for( ; --k2 ; s = p , p = p->next); //找到报数结束位置
printf("%d ",p->a); //输出出局的人
s->next = p->next;
free(p);
p = s->next; //删除节点,释放内存
k2 = k; //k2依然取到k值,以备下次使用
}
}
main()
{
int n,m,k;
ss*head;
printf("\t\t\t\t***约瑟夫问题***\n\n");
printf("请输入围坐在圆桌周围的人数n:");
scanf("%d",&n);
head = creat(n);
printf("请输入第一次开始报数人的位置m:");
scanf("%d",&m);
printf("你希望报数到第几个数的人出列:");
scanf("%d",&k); //输入参数,n、m、k
printf("出列顺序:");
print(head,n,m,k);
putchar(10);
}
#include<stdlib.h>
typedef struct s
{
int a;
struct s *next;
}ss; //建立节点
ss*creat(int n) //建立循环链表的函数
{
int i = 1;
ss*head,*p,*s;
head = (ss*)malloc(sizeof(ss));
head->a = 1;
p = head;
while(--n)
{
s = (ss*)malloc(sizeof(ss));
s->a = i+1;
p->next = s;
p = s;
i++;
}
p->next = head; //首尾相连
return(head); //返回“头”指针
}
void print(ss*head,int n,int m,int k) //依次出局函数
{
int j;
int k2 = k;
ss*p,*s;
p = head;
for( ; --m ; s = p , p = p->next); //找到第一次报数的位置
for(j=0;j<n;j++) //循环n次
{
for( ; --k2 ; s = p , p = p->next); //找到报数结束位置
printf("%d ",p->a); //输出出局的人
s->next = p->next;
free(p);
p = s->next; //删除节点,释放内存
k2 = k; //k2依然取到k值,以备下次使用
}
}
main()
{
int n,m,k;
ss*head;
printf("\t\t\t\t***约瑟夫问题***\n\n");
printf("请输入围坐在圆桌周围的人数n:");
scanf("%d",&n);
head = creat(n);
printf("请输入第一次开始报数人的位置m:");
scanf("%d",&m);
printf("你希望报数到第几个数的人出列:");
scanf("%d",&k); //输入参数,n、m、k
printf("出列顺序:");
print(head,n,m,k);
putchar(10);
}
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表)
- 约瑟夫问题(循环链表)
- 循环链表范例(约瑟夫问题)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表)
- 约瑟夫环问题(循环链表)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表实现)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题-循环链表
- 循环链表:约瑟夫问题
- 循环链表-约瑟夫问题
- 循环链表--约瑟夫问题
- 循环链表(约瑟夫问题的衍生问题)
- 循环链表——约瑟夫问题(C++)
- 约瑟夫环问题(双向循环链表模拟)
- 循环链表(解决约瑟夫环问题)(VS…
- linux crontab定时任务命令的介绍
- [Python下载CSDN博客]1. 简单实现(三)
- 马云电商革了王健林的命
- MingW下动态链接库常识
- 7种js容易忽略的写法
- 约瑟夫问题(循环链表)
- Android中Paint字体的使用
- 第四届蓝桥杯预赛试题之振兴中华及扩展
- iOS 滤镜 和 iOS6 中的Core Image技术
- C++ 数组和指针学习总结
- 版本控制
- 数据结构 - C语言版 - 线性表 所有基本操作
- 各种编码格式
- 实现CCTableView带滚动条(转)