1、线性表的区间删除
List delete(List L,int max,int min)
{
int count = 0;
for(int i=0;i<L->Last;i++) // L->Last 为线性表L的最后
{
if(L->Data[i]<min || L->Data[i] > max)
{
L->Data[count] = L->Data[i];
}
}
L->Last = count+1;
return L;
}
2、有序表的插入
void ListInsert(SqList *L,DataType x){
int pos = 0;
for(int i=0;L->Data[i]<x;i++){
pos++;
}
for(int i=L->Length-1;i>=pos;i--){
L->Data[i+1] = L->Data[i];
}
L->Data[pos] = x;
L->length++;
}
3、合并两个有序数组
void merge(int m,int n,int *a,int *b,int *c){
int x=y=z=0;
while(x<m && y<n){
if(a[x]>b[y]) c[z++]=b[y++];
else c[z++]=a[x++];
}
if(x<m) c[z++]=a[x++];
if(y<n) c[z++]=b[y++];
}
4、从顺序表中删除具有最小值的元素,并将最后一个元素放在此位置
void delete(Sqlist &L,ElemType &value){
if(L.length == 0) break; //判断顺序表是否为空
value=L.data[0]; //将第一个数字赋给value充当最小值
int pos=0; //标识最小值的位置
for(int i=1;i<L.length;i++){
if(L.data[i]<value){
value = data[i];
pos = i;
}
}
L.data[pos] = L.data[L.length - 1]; //将最后一个元素赋值给删除的这个位置上
L.length--;
}
5、将顺序表L中所有元素逆置
void Reserve(Sqlist &L){
ElemType temp;
for(int i=0;i<L.length/2;i++){
temp = L.data[i];
L.data[i] = L.data[L.length-i-1];
L.data[L.length-i-1] = temp;
}
}