标签:删除 合并 注意 维护 一个 就是 lse eve 顺序
bool DelMin(sqlList &L,Elemtype &value){
if(L.length == 0)return false;
int min = L.data[0];
int index = 0;
for(int i=1; i<L.length; i++){
if(L.data[i] < min){
min = L.data[i];
index = i;
}
}
L.data[index] = L.data[L.length-1];
L.length--;
return true;
}
void Rever(sqlList &L){
int i=0;
int j=L.length-1;
for(int i=0; i<L.length/2; i++){
int t = L.data[i];
L.data[i] = L.data[j];
L.data[j] = t;
}
}
void DelX(sqlList &L,int x){
int k=0;
for(int i=0; i<L.length; i++){
if(L.data[i] != x){
L.data[k] = L.data[i]; //相当于数组值存储除了x以为的数字,忽略x
k++; //新的长度递增
}
L.length = k;
}
}
voide Del_S_T(sqlList &L,int s,int t){
if(s>=t || L.length==0)return false;
int i,j;
for(int i=0; i<L.length && L.data<s; i++){ //找到第一个大于等于S的值
if(i > L.length)return false;
}
for(int j=0; j<L.length && L.data<=t; j++){ //找到第一个大于t的值
if(j > L.length)return false;
}
for(; j<L.length; j++,i++){
L.data[i] = L.data[j]; //将s到t的数值进行覆盖(前移)
}
L.length = i; //当前i的值就是数组的长度
}
voide Del_S_T(sqlList &L,int s,int t){
int k=0; //用于记录s到t中的元素的个数
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]; //当前元素移动K个位置
}
L.length -= k; //除去s-t之间的元素,就是删除后的数组长度
}
}
voide Del_S_T(sqlList &L,int s,int t){
for(int i=0,j=1; j<L.length; j++){
if(L.data[i] != L.data[j]){
L.data[++i] = L.data[j];
}
L.length = i+1;
}
}
sqlList Del_S_T(sqlList a,sqlList b,sqlList &c){
int i=0,j=0,k=0; //分别为a b c当前的下表
while(i<a.length && j<b.length){
if(a.data[i] <= b.data[j]){
c.data[k++] = a.data[i++]; //谁小谁先来
}else{
c.data[k++] = b.data[j++];
}
}
while(i < a.length){
c.data[k++] = a.data[i++];
}
while(j < b.length){
c.data[k++] = b.data[j++];
}
c.length = k;
return c;
}
标签:删除 合并 注意 维护 一个 就是 lse eve 顺序
原文地址:https://www.cnblogs.com/xiaofff/p/13039736.html