(3)删除操作 实现操作:ListDelete(*L,i,e),删除线性表L中的第i个位置元素,并用e返回其值 算法思路: a.首先判断非法插入情况:线性表长度大于存储空间的长度;删除位置不合理; b.取出删除元素 b.从最后一个元素开始向前遍历到第i个位置,分别将它们都向前移动一个位置; d.线性表长度减1. 源码实现: /*初始条件---顺序线性表L已经存在,且表长小于数据长度(1=length==0) return ERROR; if(i<1 || i>(L->length+1)) return ERROR; if(i<=L->length) //插入位置符合条件,从最后一个元素开始向前遍历到第i个位置 { e=L->data[i-1]; //取出存储位置为(i-1)的数据元素 for(k=L->length-1;k>i;k--) { L->data[k-1]=L->data[k]; //将存储在位置k的数据元素,向后移动一位存储 } L->length--; //线性表长度加1 return OK; } } 注释:k数据元素的存储位置,i表示数据元素在线性表的位置 6.顺序存储结构性能分析 (1)存、读数据时间复杂度:线性表的顺序存储结构,在存、读数据时,不管是哪个位置都是通过数组下标直接读存、读数据元素(执行一次),所以时间复杂度都是O(1); (2)插入或删除时间复杂度:线性表的插入或删除操作都需要从最后一个元素开始遍历,直到需插入或删除线性表的第i个元素。所以,时间复杂度为O(n); (3)适用范围:元素个数不太变化(即少插入或删除数据元素),而更多的是存取数据的应用。
02.线性表(一)顺序存储结构
(3)删除操作 实现操作:ListDelete(*L,i,e),删除线性表L中的第i个位置元素,并用e返回其值 算法思路: a.首先判断非法插入情况:线性表长度大于存储空间的长度;删除位置不合理; b.取出删除元素 b.从最后一个元素开始向前遍历到第i个位置,分别将它们都向前移动一个位置; d.线性表长度减1. 源码实现: /*初始条件---顺序线性表L已经存在,且表长小于数据长度(1=length==0) return ERROR; if(i<1 || i>(L->length+1)) return ERROR; if(i<=L->length) //插入位置符合条件,从最后一个元素开始向前遍历到第i个位置 { e=L->data[i-1]; //取出存储位置为(i-1)的数据元素 for(k=L->length-1;k>i;k--) { L->data[k-1]=L->data[k]; //将存储在位置k的数据元素,向后移动一位存储 } L->length--; //线性表长度加1 return OK; } } 注释:k数据元素的存储位置,i表示数据元素在线性表的位置 6.顺序存储结构性能分析 (1)存、读数据时间复杂度:线性表的顺序存储结构,在存、读数据时,不管是哪个位置都是通过数组下标直接读存、读数据元素(执行一次),所以时间复杂度都是O(1); (2)插入或删除时间复杂度:线性表的插入或删除操作都需要从最后一个元素开始遍历,直到需插入或删除线性表的第i个元素。所以,时间复杂度为O(n); (3)适用范围:元素个数不太变化(即少插入或删除数据元素),而更多的是存取数据的应用。