知识大全 数据结构之顺序表上基本运算的实现[13]
Posted 元素
篇首语:人们在诗中赞美鱼的自由,在餐桌上吃掉自由的鱼。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构之顺序表上基本运算的实现[13]相关的知识,希望对你有一定的参考价值。
本算法中 时间主要消耗在for循环上的元素与元素之间的交换 该循环的循环次数为 n/ 次 所以其时间复杂度为O(n)
【例 】有顺序表A和B 其元素均按从小到大的升序排列 编写一个算法将它们合并成一个顺序表C 要求C的元素也是从小到大的升序排列
算法思路 依次扫描A和B的元素 比较线性表A和B当前元素的值 将较小值的元素赋给C 如此直到一个线性表扫描完毕 然后将未完的那个顺序表中余下部分赋给C即可 要求线性表C的容量要大于线性表A和B长度之和
具体算法描述如下
int merge_SeqList (PSeqList A PSeqList B PSeqList *C)
/*将两个递增的顺序表合并成一个递增的顺序表*/
/*入口参数 指向三个顺序表的指针 返回标志 表示失败 表示成功*/
int i j k;
i= ;j= ;k= ;
*C=Init_SeqList(); /* 建立新表并初始化 */
if(!*C)
printf( C表不存在 );
return( );
if (A >length+B >length>=MAXSIZE)
printf( C表空间不足 );
return( );
cha138/Article/program/sjjg/201311/23642
相关参考
具体算法描述如下 intDelete_SeqList(PSeqListSeqListPointinti) /*顺序表删除入口参数顺序表指针删除元素位置 返回标志表示成功表示删除位置不合法表示
例如图表示在一个顺序表中删除一个元素的前后变化过程原表长为删除第个元素E在删除后为了满足顺序表的先后关系必须将第个到第个元素(下标位~)前移移一位 > 图顺序表的删除操作示意图 在顺序表上完
求顺序表的长度 求顺序表的长度是在顺序表存在的情况下顺序表中元素的个数首先判断顺序表是否存在若存在返回length若不存在返回具体算法描述如下 intLength_SeqList(PSeqLi
/*顺序表检索入口参数为顺序表指针检索元素 返回元素位置表示表不存在表示查找失败*/ inti=; if(!SeqListPoint) printf(表不存在); return();
顺序表的销毁 顺序表使用完后必须要销毁否则可能会造成内存资源浪费等问题顺序表的销毁操作实际上是初始化操作的逆运算由于要修改顺序表的指针变量所以要将指针地址传给该函数首先判断要销毁的表是否存在然后
顺序表的初始化 顺序表的初始化即构造一个空表要返回该线性表所以将返回一个指向顺序表的指针首先动态分配存储空间然后将表中length置为表示表中没有数据元素具体算法描述如下 PSeqListIn
return();/*表不存在不能插入*/ if(SeqListPoint>length>=MAXSIZE) printf(表溢出); return();/*表空间已满不
算法 顺序表的插入运算时间主要消耗在了数据的移动上在第i个位置上插入x从ei到en都要向下移动一个位置共需要移动ni+个元素设在第i个位置上作插入的概率为Pi则平均移动数据元素的次数 > 由
w=josephus_seq>data[s]; printf(%d\\tw) Delete_SeqList(josephus_seqs+);/*删除出列元素*/ /*for*/ re
算法 删除算法的时间性能分析 与插入运算相同其时间主要消耗移动在表中元素上删除第i个元素时其后面的元素ai+~an都要向上移动一个位置共移动了ni个元素所以平均移动数据元素的次数为 > 由