第2章 线性表(修改).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表(修改)

线性表的顺序存储结构具有以下基本特点: (1) 存储空间必须是连续的,预分配; (2) 逻辑顺序与物理顺序一致,用物理上的相邻来表示逻辑上的线性关系。 (3)任意相邻元素之间无空闲空间,且相距为L (4)已知基地址,可以计算出任意元素的存储地址 知识点回顾:用typedef定义类型 可以用typedef声明新的类型名来代替已有的类型名。 例1:typedef int COUNT; COUNT I,j; 例2:typedef struct {int month; int day; int year; }DATE; 新类型名DATE DATE birthday; DATE *p; 说明:对于上结构体,typedef 后跟一个无命名的结构体类型 例3: typedef struct Node { elemtype data; struct Node *next; } ListNode,*LinkList; Typedef与#define区别 如:Typedef int COUNT;和#define COUNT int 二者不同 #define是在预编译时处理的,只能做简单的字符串替换。而typedef是在编译时处理的,它可以像定义变量的方法那样声明一个类型。 如:COUNT I ,j; 根据C语言规则,定义一个指向SeqList类型的指针变量更方便,即定义一个指向顺序表SeqList的指针变量pslist  SeqList *pslist; 存储空间的动态分配: sizeof()函数:返回各种数据类型所占用的存储空间大小 malloc(unsigned size)函数:每次调用时,要求一块内存空间   声明格式: void *malloc(unsigneg int size);     size表示所需内存空间大小,单位是字节。如果成功分配内存空间,函数返回第一个字节的指针。这时须另外加上类型的转换,使函数返回的指针符合所配置的类型。 fp=(数据类型*) malloc (sizeof(数据类型)) 另一种存储表示(略) #define LIST-INIT-SIZE 100 #define LISTINCREMENT 10 Typedef struct{ Elemtype *elem; int length; int listsize; }Seqlist; 注意:  ??? ???   ①存放线性表结点的向量空间的大小MAXSIZE应仔细选值,使其既能满足表结点的数目增加的需求,又不致于预先定义过大而浪费存储空间。 ???   ②由于C语言中向量的下标从0开始,所以若L是SqList类型的指针变量,则a1和an分别存储在L.pslist[0]和L.pslist[length-1]中。 注意问题: 参数: 值传递和地址传递的区别 参数传递的方向 边界值的处理: 在第一个元素前插入 在最后一个元素后插入 当删除或插入元素时,线性表的长度改变 指定的数据元素的位置是否合法 j的取值范围: i-1=j=length-1 移动语句: For (j=length-1;j=i-1;j--) data[j+1]=data[j]; 需考虑问题: (1) 分配时由于向量空间大小在声明时确定,当L->length=MAXSIZE时,表空间已满,不可再做插入操作; (2) 当插入位置i的值为i>length+1或i<1时为非法位置,不可做正常插入操作; (3) 移动元素时是整体自下而上的顺序; (4) length值增1; j的取值范围: i=j=length-1 移动语句: For (j=i;j=length-1;j++) data[j-1]=data[j]; 需考虑问题: (1)如果需ai,应先返回ai的值。 (2)检查要删除位置的有效性,1≤i≤n ; (3)当表空时不能做删除,因表空时pslist-length的值为0,条件(i1 || ipslist-length)也包括对表空的检查(符合ilength ); (4)移动元素时是整体自上而下的顺序; (5) length值减1; 需要一个变量来存放比较的位置,此算法用i来表示数组下标位置。1=i=length 当需要移动元素时,需要一个变量表示移动的范围,

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档