资源简介 (共26张PPT)2.2 链表(第二课时)单击此处添加副标题链表的创建可以使用如下Python代码创建一个空链表:head = -1#头指针指向-1,表示链表为空#创建一个空链表Item头指针变量head:存储链表第一个节点在列表中的索引Item = [ ]链表的创建节点列表模拟单向链表的节点:data next根据实际问题的特点规划好节点的数据区域和指针区域列表[data,next]Item.append([data,next])通过列表的append( )函数将节点保存到列表中#索引:len(Item)-1单向链表的创建Item = [ [“张强”, ] , [“杜刚”, ] ]head = _______#存储第一个节点在列表中的索引1-1索引0索引1张强head杜刚0单向链表节点的访问链表中访问指定节点只能通过头指针指向的第一个节点开始访问,其他节点通过节点间的指针依次访问。data1data2data3headdata4访问变量访问变量访问变量访问变量访问变量== -1 :访问完最后一个节点访问变量:当前访问节点在列表中的索引Item = [ [“杜刚”, 2 ] , [“杜强”, 3 ],[“李彤”, -1 ] , [“李丰”, 0 ]]head = 1#依次访问并输出链表各节点数据p=head #访问变量,表示当前访问节点的索引print(Item[p][0],end=” ”) #输出当前节点数据p=Item[p][1] #访问变量迭代更新为后继的#按照p的功能:当前访问节点的数据区域为:当前访问节点的后继指针为:Item[p][0]Item[p][1]Item = [ [“杜刚”, 2 ] , [“杜强”, 3 ],[“李彤”, -1 ] , [“李丰”, 0 ]]head = 1#依次访问并输出链表各节点数据p=head #访问变量,表示当前访问节点的索引#按照p的功能:当前访问节点的数据区域为:当前访问节点的后继指针为:Item[p][0]while p!=-1:print(Item[p][0],end=” ”) #输出当前节点数据p=Item[p][1] #访问变量迭代更新为后继的Item[p][1]杜强 李丰 杜刚 李彤Item = [ [“杜刚”, 2 ] , [“杜强”, 3 ],[“李彤”, -1 ] , [“李丰”, 0 ]]head = 1#依次访问并输出链表各节点数据p=head #访问变量,表示当前访问节点的索引#按照p的功能:当前访问节点的数据区域为:当前访问节点的后继指针为:Item[p][1]while p!=-1 :print(Item[p][0],end=” ”) #输出当前节点数据p=Item[p][1] #访问变量迭代更新为后继的p!= -1 and Item[p][0]!=”杜刚” :杜强 李丰Item[p][0]单向链表节点的插入data1 next1data3 next3headdata1 next1data2 next2data3 next3插入到链表最前面data2 -1data3 next3-1next2插入到相邻两个节点之间插入到链表最后面单向链表节点的插入data1 next1data3 next3head插入到链表最前面#新节点Item[r][1] = head#头指针head = r已知链表的第一个节点的索引保存在head变量上,新节点在列表中的索引是r索引r单向链表节点的插入插入到链表相邻两个节点之间data1 next1data2 next2data3 next3某相邻两个节点在列表中索引分别为pre和p,在其之间插入一个新节点;新节点在列表中索引为r#新节点Item[r][1] = p#前驱节点Item[pre][1] = r索引pre索引r索引p单向链表节点的插入插入到链表最后面#新节点Item[r][1] = -1#前驱节点Item[p][1] = r已知链表的最后一个节点的索引为p,新节点在列表中的索引是rdata2 -1data3 -1-1索引rr单向链表节点的删除data1 nextdata2 nextdata3 nextdata2 nextdata3 -1data1 nextdata2 next删除第一个节点head删除中间节点删除最后一个节点单向链表节点的删除变量head保存了第一个节点在列表中索引#头指针head = Item [head] [1]删除第一个节点data1 nextdata2 nexthead单向链表节点的删除data1 nextdata2 nextdata3 next待删除节点在列表中索引为p,其前驱节点在列表列表中索引为pre索引pre索引p#前驱节点Item[pre][1] = Item [p] [1]删除中间节点单向链表节点的删除待删除节点的前驱节点在列表中索引为pre#前驱节点Item[pre][1] = -1删除最后一个节点data2 nextdata3 -1索引pre-1请同学们暂停视频,回顾单向链表基本操作的实现,尝试并完成“学习任务单”:一、体验系统的基本功能。简易外来人员进出校园登记系统入校登记出校移除按进校时间查看还在校内的外来人员简易外来人员进出校园登记系统基本功能架构图节点规划姓名+手机号 后继指针Item = [ ]head = -1(1)创建空链表,链表名为Item,头指针为head节点实现:[姓名+手机号,后继指针](2)杜刚、张强、李彤三人依次进校将新节点插入到链表末尾姓名+手机号 后继指针或者len(Item)-1[data1,-1]head=0节点实现:[姓名+手机号,后继指针](2)杜刚、张强、李彤三人依次进校将新节点插入到链表末尾姓名+手机号 后继指针或len(Item)-1Item[0][1]=1node=[data2,-1] #在链表末尾插入节点,所以新节点后继指针为-1Item.append(node)#将新节点保存到列表中,索引为1(2)杜刚、张强、李彤三人依次进校将新节点插入到链表末尾len(Item)-1或len(Item)-1Item[1][1]=2node=[data3,-1] #在链表末尾插入节点,所以新节点后继指针为-1Item.append(node)#将新节点保存到列表中,索引为2单链表中删除指定节点节点(3)李彤、杜刚依次出校访问到该节点的前驱节点→删除节点访问到李彤所在节点时结束访问:·p变量保存了待删节点的索引·pre保存了前驱节点的索引if p==head:#删除第一个节点head=Item[p][1]elif Item[p][1]==-1:#删除最后一个节点Item[pre][1]=-1else:#删除中间节点Item[pre][1]=Item[p][1](3)李彤、杜刚依次出校(4)按进校时间查看在校内人员遍历单向链表课堂小结用列表模拟单向链表的基本操作应用链表编程解决实际问题【巩固练习】完成课后作业练习【拓展练习】回顾课堂上的实践过程和程序,尝试在资源包中“简易外来人员进出登记系统.py”文件继续完善项目。课后作业 展开更多...... 收起↑ 资源预览