- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章 链表;例:跳马。依下图将每一步跳马之后的位置(x,y)放到一个“结点”里,再用“链子穿起来”,形成一条链,相邻两结点间用一个指针将两者连到一起。;依上图有7个结点;11.7 用指针处理链表;1249;链表中结点的定义;链表的基本操作;
(4)删除操作是指,删除结点ki,使线性表的长度减1,且ki-1、ki和ki+1之间的逻辑关系发生如下变化:
删除前,ki是ki+1的前驱、ki-1的后继;删除后,ki-1成为ki+1的前驱,ki+1成为ki-1的后继.
(5)打印输出;一个指针类型的成员既可指向其它类型的结构体数据,也可以指向自己所在的结构体类型的数据;11.7.2 简单链表; 11.7.3 处理动态链表所需的函数;函数原形:void *calloc(unsigned n,unsigned size);
作用:在内存动态区中分配 n个 长度为size的连续空间。
函数返回值:指向分配域起始地址的指针
执行失败:返回null
主要用途:为一维数组开辟动态存储空间。n 为数组元素个数,每个元素长度为size
;3. free 函数;结点的动态分配;11.7.4 建立动态链表;11.7.4 建立动态链表;图11.14;图11.14;图11.15; 图11.16 ;例11.8 建立一个有3名学生数据的单向动态链表;续;11.7.5 输出链表;图 11.18;例题 9;11.7.6 对链表的删除操作;链表中结点删除;图11.19;图11.20;图11.20;例 题 10;11.7.7 对链表的插入操作; 操 作 分 析;图11.22;图11.22;例 题 11;5;分析:按三种情况
1、第一种情况,链表还未建成(空链表),待插入结点p实际上是第一个结点。这时必然有head==null。只要让头指针指向 p 就可以了。语句为;6;3、第三种情况,链表已建成,待插入结点 p 的数据比头结点的数据大,需要找到正确的插入位置。这时,可以借助两个结构指针r 和 g,利用循环比较来找到正确位置。然后将结点 p 插入到链表中正确的位置。
参见下面的图示;6;6;6;// 结构7.c
#include stdio.h // 预编译命令
#include malloc.h // 内存空间分配
#define null 0 // 定义空指针常量
#define LEN sizeof(struct numST) // 定义常量,表示结构长度
struct numST // 结构声明
{
int num; // 整型数
struct numST *next; // numST结构指针
};
;// 被调用函数insert(),两个形参分别表示链表和待插入的结点
void insert (struct numST **phead, struct numST *p)
{ // 函数体开始
struct numST *q,*r; // 定义结构指针q,r
if ((*phead)==null) // 第一种情况,链表为空
{
*phead = p; // 链表头指向p
return; // 完成插入操作,返回
}
else // 链表不为空
{
// 第二种情况,p结点num值小于链表头结点的num值
if ( (*phead)-num p-num)
{ // 将p结点插到链表头部
p-next = *phead;// 将p的next指针指向链表头(*phead)
*phead = p; // 将链表头赋值为p
return; // 返回
}; // 第三种情况,循环查找正确位置
r = *phead; // r赋值为链表头
q = (*phead)-next; // q赋值为链表的下一个结点
while (q!=null) // 利用循环查找正确位置
{
// 判断当前结点num是否小于p结点的num
if (q-num p-num)
{
r = q; // r赋值为q,即指向q所指的结点
q = q-next;// q指向链表中相邻的下一个结点
}
else // 找到了正确的位置
break; // 退出循环
}
// 将p结点插入正确的位置
r-next = p;
p-next = q;
}
};// 被调用函数,形参为ST结构指针,用于输出链表内容
void print(struct numST *head)
{
int k=0; // 整型变量,用
您可能关注的文档
- DCS与FCS第4章探析.ppt
- 2015重庆市涪陵区班主任平台操作.探析.ppt
- 2015中考物理结构abc探析.ppt
- 2015中考完成句子探析.ppt
- 贡菊栽培与病虫害防治技术讲义.ppt
- 供电第四章讲义.ppt
- 2015中考历史第一轮复习:八上第一单元侵略与反抗探析.ppt
- 供电自动化系统集成相关技术知识讲义.ppt
- 供给侧改革讲义.pptx
- 2015中考复习课件世界近代史课件探析.ppt
- 2025年教育硕士过关检测试卷含完整答案详解【全优】.docx
- 2025年教育硕士过关检测试卷及答案详解(各地真题).docx
- 2025年教育硕士过关检测试卷及答案详解【历年真题】.docx
- 小学数学个性化学习路径导航系统用户体验优化与教学效果研究教学研究课题报告.docx
- 2025年教育硕士过关检测试卷及参考答案详解(典型题).docx
- 在线教育资源对高中生学习习惯养成的影响研究教学研究课题报告.docx
- 小学数学教师教学画像构建与教学资源优化利用策略分析教学研究课题报告.docx
- 《融合多元艺术手段的艺术教育对青少年创造性思维培养的实证研究》教学研究课题报告.docx
- 《人工智能在舞蹈动作生成与舞蹈编创辅助系统中的应用》教学研究课题报告.docx
- 初中数学代数教学与解题能力培养研究教学研究课题报告.docx
最近下载
- 2025年台湾AI行销趋势报告(繁体版)-Kolr.docx VIP
- 湖北办公楼监控及电子围栏系统施工组织设计.doc VIP
- 围栏(施工组织设计围栏(施工组织设计).doc VIP
- 2024年台湾YouTube年度社群内容趋势报告(繁体版)-Kolr.pptx VIP
- 诺尔起重设备(中国)有限公司RTG&RMG中国福建招商局漳州开发区363105.pdf VIP
- 小区沥青道路设计做法.doc VIP
- 2025年台湾AI行销趋势报告(繁体版)-Kolr.pdf VIP
- 防雷安全知识试题及答案.doc VIP
- 智能体协议:MCP、A2A、ANP-智能体互联网的黎明之前.docx
- 国有企业收购合同协议.docx VIP
文档评论(0)