// 用k来记录不属于区间内的元素 booldel(SqList &L, ElemType s, ElemType t){ if ( L.length == 0 || s >= t ) returnfalse; int k = 0; for ( int i = 0; i < L.length; i++ ){ if (L.data[i] < s || L.data[i] > t ){ L.data[k] = L.data[i]; k++; } } // for ( int j = L.length - k; j < L.length ){ // L.data[j] = NULL; // } // 使剩下来的位置置NULL,无特别说明,不用写 L.length = k; returntrue; }
// 用k来记录属于区间内的元素 booldel(SqList &L, ElemType s, ElemType t){ if ( L.length == 0 || s >= t ) returnfalse; int k = 0; for ( int i = 0; i < L.length; i++ ){ if ( L.data[i] >= s && L.data[i] <= t) k++; else L.data[i-k] = L.data[i]; } L.length -= k; returntrue; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
booldel(SqList &L){ if ( L.length == 0) returnfalse; int k=0; for ( int i =0; i < L.length, i++ ){ for (int j = i +1; j < L.length; j++ ){ if ( L.data[i] != L.data[j]){ L.data[k] = L.data[i]; k++; } } } L.lenth = k; returntrue; }
// 插入元素 boolInsert(SqList &L, int i, ElemType e){ if (i < 1 || i > L.length + 1) returnfalse; // 插入位置不合法 if (L.length >= MaxSize) returnfalse; // 线性表已满 for (int j = L.length; j >= i; j--) L.data[j] = L.data[j - 1]; L.data[i - 1] = e; L.length++; returntrue; // 插入成功 }
删除
1 2 3 4 5 6 7 8 9 10 11 12
// 删除元素 boolListdelete(SqList &L,int i,ElemType &e){ if(L.length==0) returnfalse; // 数组中没有元素可以删除 if (i < 1 || i > L.length) returnfalse; // 删除位置非法 e = L.data[i - 1]; // 返回要删除的位置的内容 for (int j = i - 1; j < L.length; j++) L.data[j] = L.data[j + 1]; L.length--; returntrue; }
按值查找
1 2 3 4 5 6 7 8 9
// 按值查找 intLocateElem(SqList &L, ElemType e, int i){ int i; for (i = 0; i<L.length; i++){ if(L.data[i]==e) return i + 1; // 返回位序!!! } return0; // 说明查找失败 }
按位查找
获取表L中第i个位置元素的值
1 2 3
ElemType GetElm(SqList &L, int i){ return L.data[i-1]; }