//初始化顺序表(静态分配)boolInitSqList(Sqlist&L) {for (int i =0; i < MAXSIZE; i++) {L.data[i] =0; }if (!L.data)exit(OVERFLOW);L.length =0;returntrue;}
求表长
intLength(Sqlist L) {returnL.length;}
按值查找
intLocateElem(Sqlist L,ElemType e) {for( int i =0; i <L.length; i++){if( e ==L[i]){return i +1; } }return-1;}
最好情况:查找的元素就在表头,时间复杂度为O(1)
最坏情况:查找的元素在表尾,时间复杂度为O(n)
平均情况:比较的平均次数为 (n+1) / 2
因此,线性表的按值查找操作算法时间复杂度为O(n)。
按位查找
ElemTypeGetElem(Sqlist L,int i) {returnL[i-1];}
插入操作
boolListInsert(Sqlist&L,int i,ElemType e) {if( i <1|| i >L.length +1){ //判断输入的i是否符合范围returnfalse; }if( L.length > MAXSIZE){ //如果存储空间已满,则插入失败returnfalse; }for( int i =L.length; i >= i; i--){ //将第i个元素及之后的元素后移L.data[i] =L.data[i-1]; }L.data[i] = e;L.length ++;returntrue; }
最好情况:在表尾插入,时间复杂度为O(1)
最坏情况:在表头插入,时间复杂度为O(n)
平均情况:所需移动结点的平均次数为 n/2
因此,线性表的插入操作算法时间复杂度为O(n)。
删除操作
boolListDelete(Sqlist&L,int i,ElemTyep&e) { //删除第i位上的数,并通过e返回其值if( i <1|| i >L.length){returnfalse; } e =L.data[i];for( int i = i; i <L.length; i++){L.data[i-1] =L.data[i]; }L.length --;returntrue; }