鱼小伟 发表于 2018-11-27 22:16:45

数据结构与算法

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


这个问题想不到怎么敲代码{:10_266:} ,有大神提供思路的吗?

taotaotaotao 发表于 2018-11-28 21:41:32

#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('游戏结束')


               


学学看看 发表于 2018-11-30 13:48:39

九少 发表于 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个结点
}

X用户 发表于 2018-12-22 15:36:06

看看

扩展阅读 发表于 2018-12-25 16:16:07

学习学习

扩展阅读 发表于 2018-12-25 16:17:00

这个我怎么感觉像是猜数字的??{:10_245:}{:10_245:}{:10_245:}
页: [1]
查看完整版本: 数据结构与算法