- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言(谭浩强)第11章结构体与共用体
第十一章 结构体共用体 §11.1 概述 结构体 (structure) — 不同类型的数据组合成一个有机的整体 定义结构体类型 一般形式: struct 结构体名 { 成员表列 }; 其中: struct 为关键字,表示是一个 “结构体类型 ” 结构体名: 同标识符规则一样。 成员表列: 组成结构体的各成员项。 §11.7 链表 采用链式存储结构的链表是用一组任意的存储单元来存放线性表的数据元素,这组存储单元既可以是连续的,也可以是不连续的,甚至可以是零散分布在内存中的任何位置上。 1、单向链表 单向链表是链式存储结构中最简单和最基本的结构. 在链表中数据元素的逻辑次序与物理存储次序不一定相同,为了能正确表示数据元素间的逻辑关系,在存储每个元素值的同时,还必须存储其直接后继(或直接前趋)的存储位置,这一部分称为链。因此,单向链表的每个数据元素由两部分组成:存储元素的数据域(DATE)和存储直接后继元素存储地址的指针域(NEXT)。其结构如下: 一个线形表a1,a2,….,an 对应的单链表可用下图表示。 h链表的头指针:用以确定线形表中第一个元素对应的存储位置,单链表可以用头指针的名字来命名。 链表的终点元素无直接后继,故其指针域为空NIL,在图中用^表示 。 带头结点的单链表为空时。其逻辑示意如下图所示.显然,带头结点的单链表把空表和非空表的处理统一起来了,对单链表初始化,就是建立一个空的单链表. (1)链表的访问 【算法3】访问单链表的算法 elemtype access (node *h,int i) { node *p; int j; p=h;j=0; while(p-next!=NULLji) { p=p-next; j++; } if(p!=NULLj==i) return(p-data); else return(NIL); } (2)单链表的插入运算 算法示意图如图所示: 【算法3】单链表的插入算法 void insertsl(node *h,int i) { node *p,*t; int j; p=h;j=0; while(p!=NULLji-1) { p=p-next; j++; } if(j!=i-1) { printf(“i is invalid”); return; } t=(node *)malloc(sizeof(node)); t-data=x; t-next=p-next; p-next=t; } (3)单链表的删除运算 删除操作和插入操作一样,首先要搜索单链表以找到指定删除结点的前趋结点(假设为P),然后将待删除结点的指针域内容赋予P结点的指针域,最后释放删除结点所占的存储空间。 【算法5】单链表的删除算法 void deletesl(node *h,int i) { node *p,*s; int j; p=h;j=0; while(p-next!=NULLji-1) { p=p-next; j++; } if(j!=i-1) { printf(“ i is invalid”); return; } s=p-next; p-next=s-next; free(s); } (4)单链表的建立 为建立链表,首先要为每个数据元素动态申请一个结点空间,然后通过指针将这些结点依次相连。链表是一种动态存储结构,每个结点所需的存储空间是在程序执行时动态申请的。利用前面已介绍过的链表插入新的结点的算法,不难得到创新链表的算法:首先建立一个空链表,然后不断向链表中插入新的数据元素,形成各结点。 根据插入新结点的位置不同,可以形成两种创建新链表的方法:一是每插入的新结点作为链表的第一结点,此时,建立链表是从表的最后一个元素开始,从后向前依次插入结点的:二是每插入的结点是当前链表的做
您可能关注的文档
最近下载
- 项目的实施流程.pdf VIP
- 2024年6月8日浙江杭州市直遴选笔试真题及答案解析.doc VIP
- 新人教版初中数学九年级上册《第二十三章旋转:23.1图形的旋转》公开课教案_4.pdf
- invt英威腾chf100a变频器使用说明书.doc
- 《生物化学课程标准.doc VIP
- 2023年黑龙江大学法学专业《民法学》期末试卷A(有答案).docx VIP
- GB_T 20001.3-2015 标准编写规则 第3部分:分类标准(OCR).pdf VIP
- 开放式和针阀式热流道比较.ppt
- 义务教育版(2024)三年级全一册第6课《视频记录片段》课件.pptx VIP
- 重庆市XX住宅工程分户验收表格填写样例.docx
文档评论(0)