- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 线性表 计算机软件技术 知识基础教程 .ppt
实际上,以上定义的p所指向的结点变量是通过标准函数生成的,即 p=malloc(sizeof(linklist)); 函数malloc分配一个类型为node的结点变量的空间,并将其地址放入指针变量p中。一旦所指的结点变量不再需要了,又可通过标准函数free(p)释放p所指的结点变量空间。因此,我们无法通过预先定义的标识符去访问这种动态的结点变量,而只能通过指针p来访问它。由于结点类型node是结构类型,因而?p是结构名,故可用加上“?”来取该结构的两分量(?p).data和(?p).next。这种表示形式总是要使用圆括号,显然很不精练。因此,在C语言中,对指针所指结构体的成员进行访问时,通常用运算符“→”来表示,例如取上面结构中的两个分量,可以写成p→data和p→next。它与前一种表示法的意义完全相同,它们之间的关系如图9.6所示。 图9.6 指针变量p(其值是结点地址)和结点变量?p (其值是结点内容)之关系 9.3.2 单链表的基本运算 下面我们将讨论用单链表作存储结构时,如何实现线性表的几种基本运算,为此,首先讨论如何建立单链表。 1.建立单链表 假设线性表中结点的数据类型是字符,我们逐个输入这些字符型的结点,并以“$”为输入结束标志。动态地建立单链表的常用方法有如下两种: 1) 头插法建表 该方法从一个空表开始,重复读入数据,生成新结点,将数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直至读入结束标志为止。图9.7表明了在空链表head中依次插入a,b,c之后,将d插入到当前链表表头时指针的修改情况。图中的序号表明了结点插入时的操作次序。 其算法如下: linklist ?CREATLISTF( ) { char ch; /* 逐个输入字符,以“$”为结束符,返回单链表头指针 */ linklist ?head,?s; head=NULL; /* 链表开始为空 */ ch=getchar( ); /* 读入第一个结点的值 */ while (ch!=$) { s=(linklist?)malloc(sizeof(linklist)); /* 生成新结点 */ s- data=ch; /* 将输入数据放入新结点的数据域中 */ s- next=head; head=s; /* 将新结点插入到表头上 */ ch=getchar( ); /* 读入下一个结点的值 */ } return head; /* 返回链表头指针 */ } /* CREATLISTF */ 2) 尾插法建表 头插法建表虽简单,但生成的链表中结点的次序和输入的顺序相反。若希望两者次序一致,可利用尾插法建表。该方法是将新结点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。例如,在空链表head中插入a,b,c之后,将d插入到当前链表的表尾,其指针修改情况如图9.8所示。图中序号同样表明了操作顺序。 图9.8 新结点*s插入到单链表head的尾上 算法描述如下: linklist ?CREATLISTR() /* 尾插法建立单链表,返回表头指针 */ { char ch; linklist ?head, ?s, ?r; head=NULL; /* 链表初值为空 */ r=NULL; /* 尾指针初值为空 */ ch=getchar(); /* 读入第一个结点值 */ while (ch!=′$′) /* 以“$”为输入结束符 */ { s=(linklist?)malloc(sizeof(linklist)); /* 生成新结点?s */ s- data=ch; if (head==NULL) head=s; /* 新结点?s插入空表 */ else r- next=s; /* 非空表,新结点?s插入到尾结点 */ r=s; /* 尾指针r指向新的表尾 */ ch=
您可能关注的文档
- 第8章 节 绘制与编辑复杂二维图形对象 AutoCAD2007计算机绘图课件.ppt
- 第8章 节 网络社区5.0 网络社会学电子教案(第2版)PPT.ppt
- 第8章 节 行政单位收入、支出和结余的核算 政府与非营利组织大学课件.ppt
- 第8章 节 计算方法的MATLAB实现(MATLAB课件).ppt
- 第8章 节 记忆 基础心理学 .ppt
- 第8章 节 证 券流通市场 证 券与投资..ppt
- 第8章 节 评判性思维和临床护理决策 .ppt
- 第8章 节 货物集装运输 铁路货运电子课件.ppt
- 第8章 节 采暖1 建筑设备工程.ppt
- 第8章 节 采暖2 建筑设备工程.ppt
- 解读:阅读•人生(广安)-2025中考真题作文+写作指导+例文展示+名师点评+…….docx
- 第2节 性质活泼的氧气(教学课件).pptx
- 1.3+生物学研究的基本方法(教学课件)生物北师大版2024七年级上册.pptx
- 跨学科实践活动 生活垃圾的分类与回收利用(教学课件)化学沪科版五四学制2024八年级全一册.pptx
- 15.2+电流和电路-2025-2026学年人教版物理九年级全一册.pptx
- 第四单元写作《思路要清晰》同步课件-2025-2026学年统编版语文七年级上册.pptx
- 3.19+清朝君主专制的强化++课件+2024--2025学年部编版七年级历史下学期.pptx
- 科技革新与世界格局的演变——两次工业革命与两次世界大战+复习课件+2025年中考历史二轮专题复习.pptx
- 2.5+跨学科实践:制作隔音房间模型++----2025-2026学年人教版物理八年级上学期.pptx
- 第三单元++文明与家园(复习课件)道德与法治统编版九年级上册.pptx
最近下载
- 水泥厂电气培训课件.pptx
- 体例格式9:工学一体化课程《windows服务器基础配置与局域网组建》任务1学习任务工作页.docx VIP
- 金税四期税务风险预警指标汇总.pdf
- 豆腐柴人工栽培技术.pdf VIP
- 天津市小升初小卷真题小外(天津市外国语大学附属外国语学校)(5套含答 .pdf VIP
- 控制计划(机加).docx VIP
- 土地资源管理学(第二版)张正峰,第一至第十二章知识点.docx VIP
- 专题三 透镜及其应用 2025年中考物理基础知识考点专题练习(含答案).docx VIP
- DL/T 502-2006 火力发电厂水汽分析方法(第1-32部分).pdf VIP
- 施工现场总平面布置培训.pptx VIP
文档评论(0)