需要平均移动约表长一半的元素,具体移动的元素个数与该元素在线性表中的位置有关。
添加到第1个,移动N个元素;
添加到第2个,移动(N-1)个元素;
……
添加到第N个,移动1个元素;
添加到第(N+1)个,移动0个元素
平均:(0+1+2+……+N)/(N+1)=N/2
删除第1个,移动(N-1)个;
删除第2个,移动(N-2)个;
……
删除第N个,移动0个
平均:[0+1+……+(N-1)]/N=(N-1)/2
扩展资料:
插入或删除一个元素,需要移动的是插入或删除元素后面的元素。
由于顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n 其中,L是元素占用存储单元的长度。
所以确定了插入或删除元素的位置后,便可算出需要移动的元素个数。
参考资料:百度百科-顺序表
添加到第1个,移动N个;
添加到第2个,移动(N-1)个;
……
添加到第N个,移动1个;
添加到第(N+1)个,移动0个
平均:(0+1+2+……+N)/(N+1)=N/2
删除第1个,移动(N-1)个;
删除第2个,移动(N-2)个;
……
删除第N个,移动0个
平均:[0+1+……+(N-1)]/N=(N-1)/2
顺序表的结构定义:
#define maxlen 50 //定义顺序表中元素个数最多有几个
typedef struct{elementtype data[maxlen]; //elementtype是元素的类型 依具体情况而定
int listlen; //便于时刻了解顺序表里元素的个数
}seqlist; //顺序表的名称 不妨为seqlist
声明顺序表类型变量:
seqlist L,L1;
如顺序表的每个结点占用len个内存单元,用location (ki)表示顺序表中第i个结点ki所占内存空间的第1个单元的地址。则有如下的关系:location (ki+1) = location (ki) +len
location (ki) = location(k1) + (i-1)len
存储结构要体现数据的逻辑结构,顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。