数据结构与算法
设编号为1, 2, …, n(n>0)个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m,从第一个人开始顺时针方向自1起顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新自1起顺序报数;如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,并给出出列人的编号序列。(要求使用带头结点的单循环链表)这个问题想不到怎么敲代码{:10_266:} ,有大神提供思路的吗? #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('游戏结束')
简单说一下思路吧
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个结点
}
看看 学习学习 这个我怎么感觉像是猜数字的??{:10_245:}{:10_245:}{:10_245:}
页:
[1]