资源简介 作业练习课程基本信息学科 信息技术 年级 高三 学期 秋季课题 2.2.2 链表在解决实际问题时的应用教科书 书 名:选择性必修1 数据与数据结构 教材 出版社:浙江教育出版社学生信息姓名 学校 班级 学号作业练习1.编程实现5个人的约瑟夫问题。 ① 完善程序,创建包含5个节点的单向循环链表; ②结合注释,完善模拟报数程序:从头指针指向的第一个节点开始报数,每过一个节点报数值加1,报道3的退出圈子,循环后一个节点重新从1开始报数。依次输出退出圈子的初始编号,最后输出留在圈子里的编号。 ③ 程序运行。 2.如下程序是“简易外来人员进出登记系统”的代码,结合系统功能及操作原理,完善程序: 程序运行示例效果如下。n=5#共5人m=3#每报数m的编号退出圈子yuesefu=[1,],[2,],[3,],[4,],[5,]]head-0print("退出圈子的初始编号依次为:”,end=")p=head#当前报数节点在列表中的索引c1#用于报数用的计数器,每过一个节点计数值加1while yuesefu[head][1]!=head:preD#记录报过数的节点在列表中的索引p=yuesefu[p][1]c+=1if c==m:#此时,报数为m的节点在列表中的索引保存在变量#其前驱节点在列表中的索引保存在变量print (yuesefu[][0],end="")if head==head=yuesefu[][1]=yuesefu[][1]p=yuesefu][1]c=1print("\n最后留在圈子里的初始编号是”,yuesefu[head][0])退出圈子的初始编号依次为:31最后留在圈子里的初始编号是4Item=0#先创建空链表head=-1print("q:退出程序1:进校处理2:出校处理3:按时间查看校内人员")s=input("请输入操作符号:")while s!-"q"fs=="1":#人员进校处理newin-=input("请输入进校人员姓名和手机号,用+连接")node=newin,.-l]#形成节点Item.append(node)并将节点保存到列表上if head---1:head=len(Item)-1else:#编写插入节点的代码eifs=="2":#人员出校处理newout=-input("请输入出校人员姓名和手机号,用+连接")p-headwhile p!=-1 and Item[p][O]=newout:#查找所在节点pre-pp=Item[p][1]if p==-1:printe(ewout,."不在学校内,请确认信息")else:#编写删除节点的代码pint(newout,"出校处理完成)elif s=="3".pint("还在校内的人员有:)p-head#遍历输出当前链表上的节点数据printOs=input("请输入操作符号:")作业练习课程基本信息学科 信息技术 年级 高二 学期 春季课题 初识链表教科书 书 名:《数据与数据结构》教材 出版社:浙江教育出版社学生信息姓名 学校 班级 学号作业练习一、选择题 1.对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为( ) A. n/2 B. (n+1)/2 C. (n-1)/2 D. n/4 2.下列关于数据结构的说法,正确的是( ) A.常见的线性关系数据结构有数组、链表、队列、栈和图 B.数组和链表在操作时,其存储空间固定不变 C.链表在插入和删除元素时,算法效率比数组高 D.进行数据的插入操作时,链表中的元素会被移动 3.对于单向链表的节点结构,以下说法不正确的是( ) A.节点的数据区域用于存放实际需要处理的数据元素 B.节点的指针区域用于存储相邻节点的存储地址 C.单向链表必须带有数据区域为空的头节点和尾节点 D.单向链表中的各个节点在内存中可以非顺序存储 4.有如下Python程序段: d=[["a",2],["b",-1],["c",1]] head=0 p=0 d.append(["d",d[p][1]]) d[p][1]=len(d)-1 执行上述程序段后,下列说法正确的是( ) A.d[0][1]的值为2,单向链表d的尾节点数据值为“b” B.d[1][1]的值为-1,单向链表d的尾节点数据值为“b” C.d[3][1]的值为1,单向链表d的尾节点数据值为“c” D.d[2][1]的值为1,单向链表d的尾节点数据值为“c” 5.采用列表模拟单向链表,data[p][0]为数据区域,data[p][1]为指针区域。在单向链表指针为 p的节点之后插入指针为 s 的节点,正确的操作是( ) A.data[s][1]=p data[p][1]=data[s][1] B.data[p][1]=s data[s][1]=data[p][1] C.data[s][1]=data[p][1] data[p][1]=s D.data[p][1]=data[s][1] data[s][1]=p 参考答案: BCCBC作业练习课程基本信息学科 信息技术 年级 高二 学期 春季课题 链表的应用教科书 书 名:《数据与数据结构》教材 出版社:浙江教育出版社学生信息姓名 学校 班级 学号作业练习有一组数据集合由1到m之间的正整数组成。指定一段数据的开始位置和结束位置,能够统计出该段数据中不同数值的个数。编写Python,实现上述统计功能。运行程序,随机生成n个1到m之间的正整数和Q个询问L和R。 实现上述功能的Python程序如下,请在划线处填入合适的代码。 n=int(input()) a=list(map(int,input().split())) Q=int(input()) ask=[[0]*100 for i in range(100)] Min=9999999 Max=-1 pos=[0]*100 Next=[-1]*100 for i in range(Q): L,R=map(int ,input().split()) if(LMax): Max=R ask[i][0],ask[i][1]=L,R for i in range(Min,Max+1): if pos[a[i]]==0: pos[a[i]]=i Next[i]=0 else: ① pos[a[i]]=i for i in range(Q): num= ② for j in range(ask[i][1],ask[i][0]+1,-1): if ③ : num-=1 print(ask[i][0],"到",ask[i][1],"之间有:",num,"个不同的数") 参考答案: ①Next[i]=pos[a[i]] ②ask[i][1]-ask[i][0]+1 ③Next[j]>=ask[i][0] and Next[j]<=ask[i][1] 展开更多...... 收起↑ 资源列表 高中信息技术浙教版(2019)选修1:2.2 链表-课后练习(含答案) (1).docx 高中信息技术浙教版(2019)选修1:2.2 链表-课后练习(含答案) (2).docx 高中信息技术浙教版(2019)选修1:2.2 链表-课后练习(含答案).docx