2.2.3顺序表算法设计,顺序表算法设计:数据采用顺序表存储,利用顺序表的基本操作来完成求解任务。,1/16,【例2-3】已知长度为n的线性表A采用顺序存储结构。设计一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。,2/16,解法一(重建法):设删除A中所有值等于x元素后的顺序表为A1,显然A1包含在A中,为此A1重用A的空间。思路:扫描顺序表A,重建A只包含不等于x的元素。,3/16,0,1,1,2,2,2,删除所有x=2的元素(k记录保留的元素个数,初值=0):,2,3,4,5,k=3,L-length=k=3,1,删除顺序表中所有值为x的元素(方法1)演示,length,6,3,删除完成,3,k=0,k=1,k=2,k=3,4/16,对应的算法如下:,voiddelnode1(SqList*/顺序表A的长度等于k,算法1:类似于建顺序表,5/16,解法二(前移法):用k记录顺序表A中等于x的元素个数,一边扫描A一边统计k值。思路:将不为x的元素前移k个位置,最后修改A的长度。,6/16,0,1,1,2,2,3,2,删除所有