ch021线性表1-定义与顺序表

ch021线性表1-定义与顺序表

ID:36284921

大小:364.31 KB

页数:33页

时间:2019-05-08

ch021线性表1-定义与顺序表_第1页
ch021线性表1-定义与顺序表_第2页
ch021线性表1-定义与顺序表_第3页
ch021线性表1-定义与顺序表_第4页
ch021线性表1-定义与顺序表_第5页
资源描述:

《ch021线性表1-定义与顺序表》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章线性表数据结构讲义-定义与顺序表示信息工程学院王晟Email:mssquall@263.net(a1,a2,…ai-1,ai,ai+1,…,an)2.1线性表的逻辑结构1.线性表的定义:是n个数据元素的有限序列n=0时称为数据元素线性起点ai的直接前趋ai的直接后继下标,是元素的序号,表示元素在表中的位置n为元素总个数,即表长空表线性终点2021/7/24224例1分析26个英文字母组成的英文表(A,B,C,D,……,Z)学号姓名性别年龄班级2001011810205于春梅女182001级电信016班2001

2、011810260何仕鹏男182001级电信017班2001011810284王爽女182001级通信011班2001011810360王亚武男182001级通信012班:::::例2分析学生情况登记表数据元素都是记录;元素间关系是线性数据元素都是字母;元素间关系是线性同一线性表中的元素必定具有相同特性2021/7/24324线性表的抽象数据类型的定义:ADTList{数据对象:D={ai

3、ai∈Elemset,i=1,2,…,n,n≥0}数据关系:R1={

4、ai-1,ai∈D,i=2,…,n}基

5、本操作:InitList(&l)操作结果:构造一个空的线性表LDestroyList(&l)初始条件:线性表已存在操作结果:销毁线性表L2021/7/24424自定义 释放线性表内存VoidDestroyList(SqList*L){Free(L->elem);L->length=0;L->listsize=0;}2021/7/24524自定义 释放链表内存全部元素都要释放,可以写为递归程序:typedefstructList{ListTypedata;structList*next; }List,*PList;可

6、以写为:voidDestroy_List(PListlist){if(list){Destroy_List(list->next);free(list);list=NULL; } } list=NULL;是必须要加的,否则后果自负。如不加上list=NULL;该指针还是指向原来的空间,会发生意外2021/7/24624自定义 链表内存释放如果从一个程序完美的角度来说,还是要释放所有结点的内存为好, 参考代码:template voidLinkedList::makeEmpty() {Linke

7、dNode*ptr=head;//游标指针LinkedNode*pre;     //指向ptr前个结点的指针while(ptr!=NULL)      {          pre=ptr;           //保存前个结点指针ptr=ptr->link;               deletepre;      } }一般在析构函数里调用它...2021/7/24724自定义C语言,free函数,遇这种情况会怎么样?我现在知道了:用malloc申请了空间并使用之后,要用free函数释放内存空间

8、,如果不释放的话,那块内存区等于被一直占据着,而无法被其他函数使用,但是问题来了.如:我用malloc申请5个连续空间:p=(int*)malloc(5*sizeof(int));.............在使用之后,我要释放它:for(i=1;i<=5;i++)free(p++);这样就可以释放了,但是如果我把循环该成for(i=1;i<10;i++)free(p++);这样:本来我申请了5个,但是我释放的时候,循环了10次,也就是说释放了,后面5个空间了,这样会造成什么后果呢?2021/7/24824自定义1.

9、分配内存空间函数malloc调用形式:(类型说明符*)malloc(size)功能:在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。“类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如:pc=(char*)malloc(100);表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。2.分配内存空间函数calloccalloc也用于分

10、配内存空间。调用形式:(类型说明符*)calloc(n,size)功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc函数与malloc函数的区别仅在于一次可以分配n块区域。例如:ps=(struetstu*)calloc(2,sizeof(structstu));其中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。