题目
编号为1,2,…,n的n个人按顺时针方向围坐一圈
每人持有一个密码(正整数),一开始人选一个正整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报道m时停止报数.报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序.
采用单向循环链表模拟此过程,按照出列的顺序印出各人的编号
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
测试数据:
m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,则正确的输出是什么?
输入数据:处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表.
不要c++
每人持有一个密码(正整数),一开始人选一个正整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报道m时停止报数.报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序.
采用单向循环链表模拟此过程,按照出列的顺序印出各人的编号
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
用C语言版的数据结构编写
测试数据:
m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,则正确的输出是什么?
输入数据:处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表.
不要c++
提问时间:2020-10-19
答案
#define ERROR 0
#define OK 1
#include
#include
struct CirNode/*定义每个结点的类型 */
{
int data;/*每个人所拥有的密码*/
int num;/*每个人在圈中的位序*/
struct CirNode *next;
};
int a[30]; /*人数要求≤30 */
struct CirNode *CreateList(int n)/*生成n个结点的单向循环链表 */
{
struct CirNode *L,*p,*q;
int i;
int j=1;
L=q=(struct CirNode*)malloc(sizeof(struct CirNode));/*建立一个不带头结点的单向循环链表 */
if(!q) return ERROR;
printf("shu ru mei ge ren de mi ma: ");
q->num=j;
printf("%d.data=",j);
scanf("%d",&q->data);
j++;
q->next=L;
for(i=1;inum=j;
printf("%d.data=",j);
scanf("%d",&p->data);
j++;
q->next=p;
p->next=L;
q=q->next;
}/*for*/
return (L);
}/*Create*/
struct CirNode *DeleteList(struct CirNode *L,int m,int n)/*报m的人出列*/
{
int i,j=0;
int k=n;
struct CirNode *p,*q,*pre;
pre=p=L;
do
{
i=1;
while(inext;i++;}
if(m==1)
{
while(pre->next!=p) pre=pre->next;
m=p->data;/*得到新的密码 */
a[j]=p->num;/*得到出列人的序号 */
q=p;
pre->next=p->next;
p=p->next;
free(q);
L=pre=p;/*让新的报1的人作为头结点 */
k--;j++;
}/*if */
else
{
q=p->next;
m=q->data;
a[j]=q->num;
p->next=q->next;
p=q->next;
free(q);
L=pre=p;
k--;j++;
}/*else*/
}while(k>1);
a[j]=p->num;/*最后一个出列人的序号 */
printf("xian zai suo you ren chu lie. ");
return (L);
}/*DeleteList*/
int main()
{
struct CirNode *L;
int i,n,m;
printf(" ");
printf("qing shu ru ren shu,n=");
scanf("%d",&n);
if(n>30||n
#define OK 1
#include
#include
struct CirNode/*定义每个结点的类型 */
{
int data;/*每个人所拥有的密码*/
int num;/*每个人在圈中的位序*/
struct CirNode *next;
};
int a[30]; /*人数要求≤30 */
struct CirNode *CreateList(int n)/*生成n个结点的单向循环链表 */
{
struct CirNode *L,*p,*q;
int i;
int j=1;
L=q=(struct CirNode*)malloc(sizeof(struct CirNode));/*建立一个不带头结点的单向循环链表 */
if(!q) return ERROR;
printf("shu ru mei ge ren de mi ma: ");
q->num=j;
printf("%d.data=",j);
scanf("%d",&q->data);
j++;
q->next=L;
for(i=1;inum=j;
printf("%d.data=",j);
scanf("%d",&p->data);
j++;
q->next=p;
p->next=L;
q=q->next;
}/*for*/
return (L);
}/*Create*/
struct CirNode *DeleteList(struct CirNode *L,int m,int n)/*报m的人出列*/
{
int i,j=0;
int k=n;
struct CirNode *p,*q,*pre;
pre=p=L;
do
{
i=1;
while(inext;i++;}
if(m==1)
{
while(pre->next!=p) pre=pre->next;
m=p->data;/*得到新的密码 */
a[j]=p->num;/*得到出列人的序号 */
q=p;
pre->next=p->next;
p=p->next;
free(q);
L=pre=p;/*让新的报1的人作为头结点 */
k--;j++;
}/*if */
else
{
q=p->next;
m=q->data;
a[j]=q->num;
p->next=q->next;
p=q->next;
free(q);
L=pre=p;
k--;j++;
}/*else*/
}while(k>1);
a[j]=p->num;/*最后一个出列人的序号 */
printf("xian zai suo you ren chu lie. ");
return (L);
}/*DeleteList*/
int main()
{
struct CirNode *L;
int i,n,m;
printf(" ");
printf("qing shu ru ren shu,n=");
scanf("%d",&n);
if(n>30||n
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
- 1英语翻译
- 2Tom is fourteen years old.Jim is fourteen years old.合并成一句 Tom is— — —Jim
- 3I walk a dog (遛狗) after supper.(用who提问)
- 4函数y=a^x+1的图像恒过定点
- 510800除以16怎样摆竖式?
- 6数学应用题怎么判断它是符合二次函数,一次函数,反比例函数,正比例函数呢?
- 7火车每小时行走80千米,汽车比火车慢每小时20.5千米.汽车的速度是火车速度的几分之几?
- 8某校化学兴趣小组对附近一化工厂排出的污水进行监测.发现污水中含某些金属离子对水质和环境造成了严重污染.他们曾对该厂排出的污水取样、过滤,对滤液进行了多次检测,其中有三
- 93x-3分之2(x+3)=16-2分之x+2-6分之x-2
- 10包装食品上描述的各物质的含量是质量分数还是体积分数
热门考点
- 1英语翻译
- 2推荐让人心胸开阔的文章
- 3红豆生南国()春来发几枝()愿君多采撷()此物最相思() 急用谢谢了
- 4测量实际上是个( 测量长度的基本工具是( ) ,选用测量工具,要特别注意( )和( ).
- 5如果用字母a表示一个数字,则a.2 ×7.a=47.12,则a是几?
- 6英语精英进,写一遍题为My view on opportuity的作文,120词左右.
- 7已知如图,△ABC是等边三角形,P是三角形外的一点,且∠ABP+∠ACP=180°. 求证:AP平分∠BPC.
- 8纸色谱法分离金属离子
- 9我想把变压器接入220V交流电,想得到36V的直流电,如何接线?要不要加电子元件?
- 10零下1摄氏度与10摄氏度相差