2.1《线性表结构及其实现》_第1页
2.1《线性表结构及其实现》_第2页
2.1《线性表结构及其实现》_第3页
2.1《线性表结构及其实现》_第4页
2.1《线性表结构及其实现》_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.3认识数据抽象高中信息技术/教科版/选择性必修1目录1问题导入2.新课讲授3.实践操作4.课堂小结1.问题导入同学们,数据结构有几种类型?你认为哪一种最简单?你能举一些线性结构的例子吗?数据结构有线性结构、树形结构和图状结构三种结构类型。我觉得线性结构最简单,它是最常见的数据组织结构。排列好的图书、餐厅刷卡就餐都是线性结构。那线性结构有什么特点呢?我们一起来回顾一下吧!知识回顾——线性结构数据元素之间的排列次序存在一种明确的先后关系,这样的数据组织方式称为线性结构。在线性结构中,除了最后一个元素,每个元素都有一个唯一的后继元素,所有元素都排成一个线性序列。这种图书排列方式是线性的吗?不是。因为它的排列是无序的。不符合线性排列的有序特征。2.新课讲授线性表的概念线性表(linearlist)按线性结构组织数据元素。在线性表中,数据元素之间存在前后的顺序关系。每个数据元素都有一个顺序号,顺序号是连续的整数。通过顺序号可以访问数据元素。线性表中的数据元素可以是一个数或一个字符,也可以是一个对象。线性表中的顺序号从0开始,而日常生活中说第几个元素,一般是从1开始,比如第12个元素的顺序号为11,请注意区分。

任务一

手工整理图书

活动1认识线性排列填一填(1)从左数第1本书的书名是,紧挨着它的后一本是

。(2)第3本书的书名是

,紧挨着它的后一本是

,紧挨着它的前一本是。(3)第8本书的书名是

,紧挨着它的前一本是

。《数据与计算》《信息系统与社会》《数据与数据结构》《人工智能初步》《信息系统与社会》《算法初步》《开源硬件项目合计》

任务一

手工整理图书

活动2整理图书填一填(1)添加图书。图书馆新采购了图书《移动应用设计》,放在书架最右边,请在图左图中相应的书脊上写上书名。(2)借阅图书。有同学借阅了图书《人工智能初步》,请在右图中相应的书脊上写上书名。移动应用设计三维设计与创意开源硬件项目设计算法初步设计

任务一

手工整理图书

活动2整理图书填一填(3)归还图书。有同学归还了图书《网络基础》,需将该书放置在图书《数据管理与分析》左面,请在图中相应的书脊上写上书名。(4)查询图书。经过以上操作后,图书列表中共有本图书,第8本书的书名是

网络基础

三维设计与创意开源硬件项目设计9算法初步线性表的特征在线性表中插入或删除数据元素,该元素之后的数据元素顺序号都将改变。线性表中的顺序号从0开始,而日常生活中说第几个元素,一般是从1开始,比如第12个元素的顺序号为11,请注意区分。从以上活动可以看出,线性表的基本操作主要包括追加、删除、插入、查询等操作。为了便于在程序中使用线性表解决问题,需要定义线性表抽象数据类型(ADTLinearList),接口如下:线性表抽象数据类型ADTLinearList:LinearList():创建空线性表。appendItem(item):将数据元素item追加到线性表removeItem(pos):从线性表中删除pos位置的数据元素getItem(pos):取得pos位置的数据元素。setItem(pos,item):设置线性表pos位置的数据为item。size():获得线性表中数据元素的个数。isEmpt():判断线性表是否为空insertItem(item,pos):将item插入表中pos位置。

任务一

手工整理图书

活动3用线性表实现图书整理填一填借助抽象数据类型LinearList,可以方便地用线性表实现任务。请补全下面的代码或注释。01.books=LinearList(

)

#创建一个空线性表02.books.appendItem("数据与计算")

#追加“数据与计算”03.books.appendItem("信息系统与社会”)

#追加“信息系统与社会“04.books.appendItem("数据与数据结构”)

#

05.books.appendItem("数据管理与分析”)#

06.books.appendItem("人工智能初步")

#

07.books.appendItem("三维设计与创意”)#

08.books.appendItem("开源硬件项目设计”)#

追加“数据与数据结构“追加“数据管理分析“追加“人工智能初步“追加“三维设计与创意“追加“开源硬件项目设计“

#追加“算法初步”

#追加“移动应用设计”11.books.removeItem(4)

#在位置4删除图书12.books.insertItem("网络基础”,3)

#在位置3插人“网络基础”13.print(books.getItem(7))

#显示位置7的图书名称14.print(books.size())

#显示图书数量books.appendItem("算法初步”)books.appendItem("移动应用设计”)

任务一

手工整理图书

活动3用线性表实现图书整理

任务二

编程整理图书

活动1用顺序存储实现线性表Python的列表采用了顺序存储的方式,可以保存多个数据,并提供了一些好用的方法。利用列表可以方便地实现线性表。列表的第一个存储位置的顺序号为0。以下用列表items来保存线性表中的数据元素(1)创建空列表由构造方法__init__()完成,它的功能是生成一个空的列表items。01.classLinearList:02.def__init__(self):03.self.items=[]

#空列表

任务二

编程整理图书

活动1用顺序存储实现线性表(2)追加数据元素在列表最后添加数据元素,可以使用列表的方法append。04.defappendItem(self,item):05.self.items.append(item)

#在列表最后增加一个元素(3)删除数据元素删除线性表指定位置的数据元素,可以使用列表的pop方法。06.defremoveItem(self,pos):07.self.items.pop(pos)

#删除表中pos位置的元素

任务二

编程整理图书

活动1用顺序存储实现线性表(4)插入数据元素在线性表中把一个元素插入到指定位置,这个位置及之后的数据元素会向后移动,顺序号发生变化。08.definsertItem(self,item,pos):

#把item插人表中pos位置09.self.items.insert(pos,item)

任务二

编程整理图书

活动1用顺序存储实现线性表(5)其他操作defgetItem(self,pos):

#获得位置pos的数据元素returnself.items[pos]

defsetItem(self,pos,item):

#设置位置pos的值为itemself.items[pos]=itemdefsize(self):

#获取线性表的数据元素个数returnlen(self.items)defisEmpty(self):

#判断线性表是否为空returnself.size()==0

任务二

编程整理图书

活动1用顺序存储实现线性表顺序表和数组线性表的顺序存储用一组连续的存储单元依次存储线性表的数据元素。利用这种存储方式实现的线性表叫作顺序表。如果顺序表中各数据元素占用的存储空间大小相同(比如是同一种类型的数据),这样的顺序表叫数组。各个数据元素叫数组元素,数据元素的序号叫数组下标。如果知道数组的起始存储位置及单个数组元素占用空间大小,各个数组元素的存储位置可以通过计算得到,因而数组具有随机访问的特点,存取数组元素的效率很高。

任务二

编程整理图书

活动2用链式存储实现线性表用链式存储实现的线性表是一个节点序列。节点中不仅保存数据,还保存下一个节点的存储位置。用链式存储实现的线性表也叫作链表。首先定义链式存储所需要的节点类。01.classNode:02.def__init__(self,item):self.data=item

#数据区04.#链接区,指向下一个节点,初始化时为空05.self.next=None

任务二

编程整理图书

活动2用链式存储实现线性表(1)创建空线性表创建空线性表由构造方法__init__()完成。链表需要有一个头节点引用变量head指向第一个节点。新创建的链表还没有节点,所以将head指向空。06.#链式存储实现的线性表07.classLinearList:08.def__init__(self):09.self.head=

#让头节点引用指向空None

任务二

编程整理图书

活动2用链式存储实现线性表(2)追加数据元素在链表的末端添加节点,首先生成新节点,再找到链表尾节点,最后让尾节点指向新节点。10.#在链表末端添加数据元素11.defappendItem(self,item):12.temp=Node(item)

#用item生成节点类对象temp#如果链表为空13.ifself.head==None:14.self.head=temp15.return

任务二

编程整理图书

活动2用链式存储实现线性表(2)追加数据元素16.tail=

#tai1先指向头节点17.whiletail.next!=None:

#tail还没有指向最后节点18.tail=tail.next

#向后移动19.tail.next=

#链接新节点self.headtemp

任务二

编程整理图书

活动2用链式存储实现线性表(3)删除数据元素删除链表中的数据元素,需要先从第一个节点开始向后移,直到指定位置。假设要删除的节点的下一个节点为p。先移动到要删除位置前面的节点previous,再让previous指向节点p。20.#删除表中pos位置的节点28.21.defremoveItem(self,pos):22.previous=self.head

#要删除位置的前一个位置

任务二

编程整理图书

活动2用链式存储实现线性表(3)删除数据元素23.ifpos==0:

#如果要删除的是链表头节点24.25.return26.n=927.whilen<pos-1:

#找到要删除的前一个节点28.previous=previous.next29.n=n+130.previous.next=

#删除节点previous.next.next

任务二

编程整理图书

活动2用链式存储实现线性表(4)获取数据元素获得链表指定位置的数据元素,需要先从头节点移动到指定位置,再返回该位置的数据元素。请补全下面的代码。31.#得到pos位置的数据元素32.defgetItem(self,pos):33.current=self.head#没到指定位置34.count=035.whilecount<pos:

36.current=

#指向下一个节点37.count=count+1#数加138.returncurrent.data#返回数据元素current.next

任务二

编程整理图书

活动2用链式存储实现线性表(5)获取数据元素个数从头节点遍历整个链表,并计算数据元素节点的个数。39.#统计链表的节点数40.defsize(self):41.current=self.head#指向头节点42.count=043.whilecurrent!=None:#不是链表的结尾#节点数增加144.count=count+1#节点数加145.current=#指向下一个节点46.returncount#返回节点数current.next

任务二

编程整理图书

活动2用链式存储实现线性表(6)判断线性表是否为空判断线性表是否为空,可以通过判断头节点引用是否为None实现。47.defisEmpty(self):#判断链表是否为空48.returnself.head==None(7)插入数据元素插入节点需要先产生一个新节点,放置要插入的数据元素;然后从头节点移动到插入位置前面的节点previous;最后让新节点指向previous的后一个节点,让previous指向新节点。请补全下面的代码。

任务二

编程整理图书

活动2用链式存储实现线性表49.#将item插入表中pos位50.definsertItem(self,item,pos):51.temp=Node(item)#生成新节点52.ifpos==0:#如果在头节点前插人53.temp.next=self.head#新节点指向头节点54..self.head=temp#头节点指向新节点55..return(7)插入数据元素

任务二

编程整理图书

活动2用链式存储实现线性表56.previous=self.head#指向插入位置前一节点57.n=0#计数变量置058.whilen<pos-1:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论