9.将线性表L中第个数据元素删除 int ListDelete(sQ list l int i, Entry Type *e) if( IsEmpty(L) return Error;/检测线性表是否为 if(<1|>L-> Length) return Error;/检查值是否合 理 e=L>item[i-1;/将欲删除的数据元素内容保留在e 所指示的存储单元中 for(j=ij<=L-> length-1ij计+)将线性表第计+1个元素之 后的所有元素向前移动 L->itemj-1FL->item i; L->length return OK 请单鼠标左键换页!
9. 将线性表L中第i个数据元素删除 int ListDelete(SQ_LIST *L,int i,EntryType *e) { if (IsEmpty(L)) return ERROR; //检测线性表是否为 空 if (i<1||i>L->length) return ERROR; //检查i值是否合 理 *e=L->item[i-1]; //将欲删除的数据元素内容保留在e 所指示的存储单元中 for (j=i;j<=L->length-1;j++) //将线性表第i+1个元素之 后的所有元素向前移动 L->item[j-1]=L->item[j]; L->length--; return OK; }
插入算法的分析 假设线性表中含有n个数据元素,在进行插入操作 时,若假定在n+1个位置上插入元素的可能性均等,则 平均移动元素的个数为 E n 1+ n+1 请单鼠标左键换页!
插入算法的分析 假设线性表中含有n个数据元素,在进行插入操作 时,若假定在n+1个位置上插入元素的可能性均等,则 平均移动元素的个数为:
删除算法的分析 在进行删除操作时,若假定删除每个元素的可能 性均等,则平均移动元素的个数为: FE=∑-i 々 n 2 分析结论 顺序存储结构表示的线性表,在做插入或删除操 作时,平均需要移动大约一半的数据元素。当线性表 的数据元素量较大,并且经常要对其做插入或删除操 作时,这一点需要值得考虑。 请单赤鼠标左键换页!
删除算法的分析 在进行删除操作时,若假定删除每个元素的可能 性均等,则平均移动元素的个数为: 分析结论 顺序存储结构表示的线性表,在做插入或删除操 作时,平均需要移动大约一半的数据元素。当线性表 的数据元素量较大,并且经常要对其做插入或删除操 作时,这一点需要值得考虑。 = − = − = n i 1 d l 2 n 1 (n i) n 1 E
2.3线性表的链式存结构 线性表顺序存储结构的特点 它是一种简单、方便的存储方式。它要求线性表 的数据元素依次存放在连续的存储单元中,从而利用 数据元素的存储顺序表示相应的逻辑顺序,这种存储 方式属于静态存储形式。 暴露的问题 在做插入或删除元素的操作时,会产生大 量的数据元素移动; 对于长度变化较大的线性表,要一次性地 分配足够的存储空间,但这些空间常常又得不到充分 的利用; 线性表的容量难以扩充。 请单鼠标左键换页!
2.3 线性表的链式存储结构 线性表顺序存储结构的特点 它是一种简单、方便的存储方式。它要求线性表 的数据元素依次存放在连续的存储单元中,从而利用 数据元素的存储顺序表示相应的逻辑顺序,这种存储 方式属于静态存储形式。 暴露的问题 ⚫ 在做插入或删除元素的操作时,会产生大 量的数据元素移动; ⚫ 对于长度变化较大的线性表,要一次性地 分配足够的存储空间,但这些空间常常又得不到充分 的利用; ⚫ 线性表的容量难以扩充
线性表的链式存储结构 线性表的链式存储结构是指用一组任意的存储单 元(可以连续,也可以不连续)存储线性表中的数据 元素。为了反映数据元素之间的逻辑关系,对于每个 数据元素不仅要表示它的具体内容,还要附加一个表 示它的直接后继元素存储位置的信息。假设有一个线 性表(a,b,c,d),可用下图22所示的形式存储: 请单鼠标左键换页!
线性表的链式存储结构 线性表的链式存储结构是指用一组任意的存储单 元(可以连续,也可以不连续)存储线性表中的数据 元素。为了反映数据元素之间的逻辑关系,对于每个 数据元素不仅要表示它的具体内容,还要附加一个表 示它的直接后继元素存储位置的信息。假设有一个线 性表(a,b,c,d),可用下图2-2所示的形式存储: