数据结构题目1:线性表的顺序存储结构的插入

题目:在长度为n的线性表A的第i个位置插入一个新数据元素item。
解题思路:
首先,判断线性表是否已满。如果未满,还要测试插入的位置是否合适,合法的插入位置应该是1<=i<=n+1。出现任何一种异常,插入操作都将失败。
其次,如果满足插入条件,具体插入过程分为以下3步:

  1. 将线性表的第i个数据源数到第n个数据元素之间的所有元素依次向后移动一个位置(共移动n-i+1个元素)
  2. 将新的item元素插入到线性表的第i个位置上。
  3. 修改线性表的长度为n+1.
    需要注意的是数据元素依次后移一个位置的方向,必须是从表的末尾元素开始后移,直到将第i个位置的元素后移一个位置为止。
    具体算法实现如下:
let maxsize = 100 //假设线性表的开辟的空间为100
myarray = {
    data : new Array(maxsize),
    length :0,
}

function insert(A, i, item){
    let n = A.length
    if ( n==maxsize || i<1 || i>n+1 ) {
        return "表格或插入位置不正确!"
    }
    for (let j = n-1; j >= i-1; j--) {
        A.data[j+1] = A.data[j]
    }
    A.data[i-1] = item
    A.length++
    return A
}
insert(myarray, 1, 'a')

性能
最好的情况是不移动数据。最坏的时间复杂度为O(n)。

你可能感兴趣的:(数据结构题目1:线性表的顺序存储结构的插入)