资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
顺序存储结构线性表(List)部分操作的实现逻辑结构和主要操作小结和作业逻辑结构Da1, a2, , ai ,anS |ai-1 ,ai D, i=2,.,n 主要操作InitList(intlength;intlistsize; SqList;使用 SqListSqListL;Lelemlengthlistsizeint a;elemlength=6listsize= 100L使用 SqList部分操作的实现InitList(if(!L.elem) return(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return(OK);DestroyList功能过程:1、释放elem指示的连续存储单元2、L.length=03、L.listsize=0原型:Status DestroyList( SqList L.length=0;L.listsize=0;return(OK);GetIem功能过程:1、判断i的合法性2、e=ai原型:Status GetItem( SqList L, int i, ElemType e=L.elemi - 1; / e=*(L.elem + i 1)return (OK)ListInsert功能原型:Status ListInsert( SqList L.elemi-1=e;ak+1 = akk=length iWhile( j=i-1)L.elemj+1=L.elemj;j-;for(int j=L.length;j=i;j+)L.elemj= L.elemj-1; L.elemi-1=e;ListInsert移动q=L.elem + (i-1); p=L.elem + L.length-1while(p=q) *(p+1)=*p;p-;方法二:移动指针q指向了aiP开始时指向了alength*q=e; ak+1=akk=length iListInsert移动q=L.elem + (i-1); for(p=L.elem + L.length-1; p=q; p-) *(p+1)=*p;*q=e;ListInsert(L, 5, 66) L.length-10pppq87564266p21 18 30 75 42 56 87ListInsert移动L77a1a2a3a4a5a6a7a1a2a3a4a5a6a7表满的条件?length=listsize10ListInsert移动if(L.length = L.listsize)newbase = realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) return(OVERFLOW);L.elem=newbase;L.listsize +=LISTINCREMENT;ListInsertStatus ListInsert(SqList if( L.length = = L.listsize) newbase = realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) return(OVERFLOW);L.elem=newbase;L.listsize +=LISTINCREMENT;ListInsertq=L.elem + (i-1); p=L.elem + L.length-1;while( p=q) *(p+1)=*p; p-*q=e; L.length+;return(OK);移动赋值长度增加for(int j=L.length-1;j=i-1;j+)L.elemj+1= L.elemj; L.elemi-1=e; +L.length;ListInsert1、在什么情况下,移动次数最少,最少移动次数是 多少?2、在什么情况下,移动次数最多,最多移动次数是 多少?3、在插入每个位置的概率相同的情况下,移动次数 的期望值是多少?List Delete功能原型:Status ListDelete( SqList e=*p;q=L.elem + L.length-1;for(+p; p L.length) return(ERROR);p=L.elem + i 1;e=*p;q=L.elem + L.length 1;for(+p; p 顺序存储结构 主要操作的实现:InitList、DestroyList、ListInsert、ListDelete、GetItem、ListMerge一片连续的存储区域预先分配 数组 复习和作业作业:2.2(1, 2) 2.11,2.21复习:C语言中的指针
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号