网站大量收购独家精品文档,联系QQ:2885784924

哈工大数据结构1浅析.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表; 2.1 线性表的定义与运算;非空的线性表 (n0) 记作: ( a1,a2, …ai, …an);(4) ai 是属于某个数据对象的元素, 它可以是 一个数字、一个字母或一个记录。; 3.线性表的特性;例: 26个英文字母组成的字母表;姓 名; 4. 线性表的运算;2.2 线性表的顺序表示和实现;1. 顺序表的定义; ; 只要知道顺序表基地址和每个数据元素所占字节数,即可求出第 i 个数据元素的存储地址。 所以顺序表具有按数据元素序号随机存取的特点。; 3. 顺序表的描述(静态);;从结构性考虑,通常将一个顺序表封装成一个结构(静态):; (a1,a2,…,ai-1,x,ai,…,an);将 an---ai 之间的结点依次后移,为新结点让出第 i 个位置。 将新结点 x 插入到第 i 个位置。 若 i=n+1, 则将 x 插入到表尾。 修改last,使之仍指向最后一个元素。 相当于修改了表长。;int InsList(SeqList *L, int i , datatype x) { int j; if( L-last==MAXLEN-1) { printf(“顺序表已满”); // 最后一个结点的位置是 MAXLEN-1 // 表明顺序表 已满,不能插入。 return( -1 ); } if( i1 || i L-last+2 ) // i1 即 i=0 为空表 // L-last=n-1 L-last+2=n-1+2=n+1 // i L-last+2 即 i n+1 即 i = n+2 // 检查空表及插入位置合法性 { printf(“位置出错”); return( 0 ); } ;// 以下处理 i 的有效范围 1=i=n+1 for( j=L-last; j=i-1; j--) L-data[j+1]=L-data[j] ; // 结点依次向后移动 // 当 i=n+1 时,j= L-last=n-1, i-1=n+1-1=n // 不满足j=i-1 所以不做此循环即不移动结点 L-data[i-1]=x ; // 新元素插入 将 x 放在原来 ai 的位置 // 当 i=n+1时, data[i-1]= data[n]= x // 将 x 直接作为an+1 放在线性表的最后 L-last++; // last仍指向最后的元素 return( 1 ) };插入算法时间性能分析:;按等概率考虑: 可能插入的位置为 i=1,2,……n,n+1 共 n+1 个, 则 pi=1/(n+1) 所以:;(a1,a2,…,ai-1,ai+1,…,an);若i=n,只需删除终端结点,不用移动结点。 当1=in时,将ai+1---an之间的结点依次向前移动。 (共需移动 n-i 个结点)。 修改 last 指针(相当于修改表长)使之仍指向最后一个 结点。;int DelList( SeqList *L, int i ) { int j; if( i1 || iL-last+1 ) // i1为空表 // iL-last+1

文档评论(0)

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

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

1亿VIP精品文档

相关文档