- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]2线性表2012
2.1.1 线性表的逻辑结构 2.1.2 线性表的抽象数据类型定义 设有一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是多少? Typedef: 类型定义标识符,作用是为1个数据类型或者结构重新定义1个名称; 例:typedef int Status; /*类型名定义用status代替int*/ 为什么用Status代替int? (1)定义不同的数据类型名称是为了程序的可读性。 (2)而且一旦你需要将类型变换比如使用double型的了,只要写: typedef double ElemType; 一下子就全改了,如果没有定义,就要一个个的把int改成double 关于数据类型名Status Status是“状态”的意思,不是C语言中的关键字,其目的是为了增强算法的“可读性”。 Typedef int Status; Status型的数据范围是:True、False、OK、Error #define True 1 #define False 0 Status ListEmpty (SqList L){ //判断线性表是否为空表 if (L.length==0) return True; return False; } malloc 分配你传递参数个字节的内存,比如你传个100进去,就给你分配100字节的内存,这里你传来list_init_size*sizeof(elemtype),就分配这么多字节的内存。 其中list_init_size指的多少个elem,然后用sizeof求elem的每个元素占用的字节数。两个相乘,这样就能分配你所需要的字节了。 但是malloc返回的是void 类型的这块内存的首地址。而你接受这个地址是用的elem类型的,所以需要做个强制转换,在前面有个(elemtype*)是做强制转换用的。?? 需要注意到是用malloc分配的内存不能够被自动释放,需要你自己去调用free函数来释放,不然的话可能会造成内存泄漏。 若线性表 (a1,a2,…,ai-1,e,ai,ai+1,…,an ), i 的取值范围为1≤i≤n+1 。下图表示一个顺序表中的数组在进行插入运算前后,数据元素在数组中的下标变化。 算法2.3 在线性表L中第i个数据元素之前插入数据元素e Status ListInsert_sq(sqList L,int i,ElemType e) { if (i1||iL.length+1) return ERROR; //检查i值是否合理 if (L.length=L.Listsize) { newbase=(ElemType*)realloc(L.elem, //当前存储空间已满,增加分配 (L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase)exit(OVERFLOW); //存储分配失败 L.elem=newbase; //新基址 L.listsize+=LISTINCREMENT; } q=(L.elem[i-1]); for(p=(L.elem[L.length-1]);p=q;--p) *(p+1)=*p; //插入位置及之后的元素右移 *q=e; //插入e ++L.length; //表长增1 return OK; }//ListInsert_sq Realloc(原动态区首址,字节数) 功能: (1)申请新的动态存储空间; (2)将原动态区的数据拷贝到新动态区; (3)释放原动态存储区; (4)返回新存储区首地址(无类型)。 用途:当原动态存储区不够用时,追加动态存储区; 故上页语句意思是:先释放原来L.elem所指内存区域 ,并按照(L.listsize
您可能关注的文档
- [计算机硬件及网络]项目五 DNS服务器的架设.doc
- [计算机软件及应用]-毕业论文-留言板模块设计与开发.doc
- [计算机硬件及网络]计算机网络基础-1.ppt
- [计算机硬件及网络]迈普技术支持培训-广域网局域网技术培训.ppt
- [计算机硬件及网络]零起点学彩显.pdf
- [计算机软件及应用]02-Java 语言基础rev.ppt
- [计算机硬件及网络]计算机组成原理实验指导手册2010.pdf
- [计算机软件及应用]02net语言基础.ppt
- [计算机软件及应用]002Python安装和部署.ppt
- [计算机软件及应用]02UML应用.ppt
- [计算机软件及应用]3嵌入式Linux操作系统.ppt
- [计算机硬件及网络]陕西省人口计生委公共服务系统.doc
- [计算机软件及应用]3d_max2010基础教程_第一章.ppt
- [计算机软件及应用]1第二讲 认识单片机与单片机C语言编程.ppt
- [计算机软件及应用]4 Big Data.ppt
- [计算机软件及应用]4_末梢维护人员系列培训之ADSL篇-案例集.ppt
- [计算机软件及应用]3ti-Flex技术培训-FLex基础.ppt
- [计算机软件及应用]4进程的同步和死锁.ppt
- [计算机软件及应用]2班-地震兰德马克课程设计论文模版2013.doc
- [计算机软件及应用]5第5章 MIS开发概述.ppt
文档评论(0)