鱼C论坛

 找回密码
 立即注册
查看: 2853|回复: 6

[已解决]数据结构与算法

[复制链接]
发表于 2018-11-27 22:16:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
设编号为1, 2, …, n(n>0)个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m,从第一个人开始顺时针方向自1起顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新自1起顺序报数;如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,并给出出列人的编号序列。(要求使用带头结点的单循环链表)


这个问题想不到怎么敲代码 ,有大神提供思路的吗?
最佳答案
2018-12-5 01:38:48
简单说一下思路吧
1、可以设定一个整型变量n来控制密码数量的输入,接着创建一个空的单链表L,指针l作为头指针,指针p作为工作指针,初始化等于l,指针r作为为指针,指向头结点。
2、设定一个一次输入一个密码的循环结构,i作为计数器,停止条件为i==n;这样把所有的密码都存入循环单链表中了。此时,p==r;代码这个时候,最好在循环结束后,当p指针再移动一位:p=p-》next,这样p就指向了第一个结点(密码)
3、在设定一个循环
while(!l==r){//只要指针不空,一直运行
                        for(int i=0;i<m;i++){//寻找第m个结点
                                p=p->next;
                                if(p==r)
                                                {
                                                        p=p->next;//跳过头结点
                                                }
                                i++
                                        }
m=p->data;//把第m个结点的值赋给m
printf(m);//输入密码
*LNODE s=p;
p->next=s->next;
free(s);  //删除第m个结点
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-28 21:41:32 | 显示全部楼层

回帖奖励 +3 鱼币

#coding=utf8
import random
secret=random.randint (1,10)
temp=input('请输入您猜的数字:')
guess=int(temp)  #没转化为整型会报错
                 #TypeError: '<=' not supported between instances of 'int' and 'str'
i=1
if guess>secret:
        print('大了')
if guess<secret:
        print('小了')
while (guess!=secret) and (i<=3):
        temp=input('那就请你重新输入您猜的数字吧:')
        guess=int(temp)
        if guess>secret:
                print('大了')
        if guess<secret:
                print('小了')
        i=i+1       
if i>3:
        print('输入次数超过3次了,game over!')
if guess==secret:
        print('猜对了!!')                    
        print('游戏结束')  


               


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-11-30 13:48:39 | 显示全部楼层

回帖奖励 +3 鱼币

提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-5 01:38:48 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +3 鱼币

简单说一下思路吧
1、可以设定一个整型变量n来控制密码数量的输入,接着创建一个空的单链表L,指针l作为头指针,指针p作为工作指针,初始化等于l,指针r作为为指针,指向头结点。
2、设定一个一次输入一个密码的循环结构,i作为计数器,停止条件为i==n;这样把所有的密码都存入循环单链表中了。此时,p==r;代码这个时候,最好在循环结束后,当p指针再移动一位:p=p-》next,这样p就指向了第一个结点(密码)
3、在设定一个循环
while(!l==r){//只要指针不空,一直运行
                        for(int i=0;i<m;i++){//寻找第m个结点
                                p=p->next;
                                if(p==r)
                                                {
                                                        p=p->next;//跳过头结点
                                                }
                                i++
                                        }
m=p->data;//把第m个结点的值赋给m
printf(m);//输入密码
*LNODE s=p;
p->next=s->next;
free(s);  //删除第m个结点
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-22 15:36:06 | 显示全部楼层

回帖奖励 +3 鱼币

看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-25 16:16:07 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 16:17:00 | 显示全部楼层

回帖奖励 +3 鱼币

这个我怎么感觉像是猜数字的??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表