版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一章数组与链表(含代码)1.数组在内存中的存储方式为顺序存储,数组作为常用的数据结构,有特定的数据组织、存储结构及操作特性。2.计算机中数据的存储结构主要分为顺序存储结构和非顺序存储结构。常见的顺序存储结构是数组,常见的非顺序存储结构是链表3.数字是由相同类型的变量构成的一个序列。数组使用一个标识符命名,并用编号区分数组内的各个变量,这个特殊的标识符号称为数组名,编号称为下表或索引。由数组名和下标组成数组的各个变量称为数组的分量,也称为数组元素。(数组的下标一般从0开始)4.数组在内存中的存储结构简单,创建数组时系统会分配一块连续的存储空间,每个数组元素按照下标顺序依次存储。如下图图1.15.一维数组适合用来表示具有线性特征的数据序列,因此只需要一个下标来表示数据元素在该序列中的位置。如果要表示二维空间内既有纵向联系和又有横向联系的一批数据,那么采用二维数组会变得更形象、方便由于二维数组中的数组有行有列两个维度的位置信息,因此需要两个下标。二维数组下标详见下图:图1.26.用二维数组表示的数据在内存中的存储方式也才用顺序存储,有行优先存储和列优先存储。一般默认采用行优先。7.数组的特性:1.数组元素的数据类型相同,2.通过数组名的下标对数组元素的值进行访问,3.数据存储空间不变8.动态数组就是在声明时没有确定数据规模的数组,可以在任何时候改变数据规模。9.对数组的常见操作有:数组的创建、数组元素的访问、数组元素的插入和删除等。10.Python没有数组这种数据结构,所以采用列表来实现。11.数组的和创建实质是在系统内存中划分一块连续区域,同来保存数组所含的所有数据元素12.数组元素的访问指的是寻址到特定的数组元素,并根据存储地址对该数据元素进行读取、修改等操作。因为数组元素从0开始数,所以:例如s[5]访问的是s数组的第六个元素13.Python列表常用函数与方法:图1.314.链表指的是将需要处理的数据对象以节点的形式,通过指针串联在一起的一种数据结构。链表中的每一个节点一般由“数据区域”和“指针区域”两部分构成(如下图)。数据区域用于保存实际需要处理的数据元素,指针区域用来保存该节点相邻节点的存储地址,通过该地址指向(指针)来实现从当前节点按顺序走到相邻的节点。某个节点前面的相邻节点称为该节点的前驱节点,后面的相邻节点称为该节点的后继节点。15.每个链表都拥有一个表头head(也称为头指针),头指针的作用之一是链表的入口,只有通过头指针才能进入链表;作用之二是为循环链表设立一个边界,便于数据处理时的边界判断和处理。16.链表可以根据每个节点中指针的数量分为两类:只有一个指针的单向链表和有两个指针的双向链表(即每个节点有两个指针区域,一个指向前驱节点,一个指向后继节点)。将第一个节点和最后一个节点使用指针链接,就会形成循环链表17.单向链表中各个节点在内存中可以非顺序存储,每个节点使用指针指向后继节点的存储地址。进入链表只能通过头指针head,其他节点则需要经过所有在它之前的节点才可以访问,尾节点的指针指向null,表示指向为空(一般情况下,尾指针为1。当尾指针指向head时,即为循环链表)18.链表的特性:1.同一链表中每个节点的结构均相同,2.每个链表必定有一个头指针,以实现对链表的引用和边界处理,3.链表占用的空间不固定。19.链表的操作有:链表的创建、链表节点的访问、链表节点的插入与删除单向链表代码实现给定一个链表a[],其第一个元素代表的下标为head。a[i]代表的元素是一个长度为2的数组,其中a[i][0]表示它的数据data(数据都是整数),a[i][1]表示它的下一个元素next,如果next为−1代表其是链表的最后一个元素。假设有如下代码:a=[['A',2],['D',1],['B',3],['C',1]]head=0#删除第一个元素head=a[head][1]#遍历链表h=headwhileh!=1:print(a[h][0])h=a[h][1]#删除中间元素,根据内容Bh=headpre=headwhileh!=1:ifa[h][0]=='B':breakelse:pre=hh=a[h][1]a[pre][1]=a[h][1]#在头部插入元素head=0a.append(['E',head])head=len(a)1#插入中间元素根据值#首先找到Bh=headwhileh!=1:ifa[h][0]=='B':breakelse:h=a[h][1]#然后插入Ea.append(['E',a[h][1]])a[h][1]=len(a)1链表相对于数组而言,更便于删除和添加,数组相对于链表而言,更便于查找和修改 表1.1双向链表代码实现给定一个链表a[],其第一个元素代表的下标为head。a[i]代表的元素是一个长度为3的数组,其中a[i][0]表示当前节点的前一个节点pre,a[i][1]表示它的数据data(数据都是整数),a[i][2]表示它的下一个节点next,如果next为−1代表其是链表的最后一个元素。假设有如下代码:a=[[1,'A',2],[3,'D',1],[0,'B',3],[2,'C',1]]head=0pre=next1=head#遍历链表(从前往后)whilenext1!=1:print(a[next1][1])next1=a[next1][2]#遍历链表(从后往前)whilea[next1][2]!=1:#先找到最后一个节点next1=a[next1][2]pre=next1whilepre!=1:#从最后一个节点向前遍历print(a[pre][1])pre=a[pre][0]#删除中间元素,根据内容Bwhilenext1!=1:ifa[next1][1]=="B":breakelse:pre=next1next1=a[next1][2]a[a[next1][2]][0]=a[next1][0]a[pre][2]=a[next1][2]#在头部插入元素a.append([1,'E',head])head=len(a)1pre=next1=head 表1.2#插入中间元素根据值whilenext1!=1:ifa[next1][1]=="B":breakelse:pre=next1next1=a[next1][2]a.ap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全新2024版塔吊操作员雇佣合同3篇
- 《客户关系建立》课件
- 心内科术后护理诊断
- 工程用车维修承包协议(2024年修订)3篇
- 2024版全新定制职业装合同范本2篇
- 教科版六年级科学上册期末复习专项训练十七《信息的交流传播》
- 幼儿园教师避险培训
- 《土坡的稳定性分析》课件
- 杭州世茂项目创作提案课件
- 2024年秋季新教材人美版一年级上册美术教学课件:第四单元第3课小小美食节
- 新三年级数学家长会
- 多层喷射沉积技术
- 四级汉译英段落翻译技巧(课堂PPT)
- 《月迹》课堂实录全面版
- 法语常用动词变位(完整版)
- 测量放大器设计
- 尔雅超星语言与文化
- 医疗器械质量体系不合格品处理单模板
- 工程量确认单格式
- 魅力中药花茶养生
- 模电课程设计题目
评论
0/150
提交评论