#include<stdio.h>
#define MaxSize 50
typedef struct SqList
{
int len;
int curlen;
int data[MaxSize];
};
void deleteguolv(int s,int t,SqList &L) //过滤法
{
int lacatelem =0;
for(int i=0;i<L.len;i++)
{
if(L.data[i]<s||L.data[i]>t)
{
lacatelem++;
}
L.data[lacatelem]=L.data[i];
}
L.len=lacatelem;
}
void deletepianyi(int s,int t,SqList &L) //偏移法
{
int sindex=-1;
for(int i=0;i<L.len;i++)
{
if(L.data[i]>=s && L.data[i]<=t)
{
sindex=i;
break;
}
}
int tindex=-1;
for (int i = 0; i < L.len; ++i)
{
if(L.data[i]>=s && L.data[i]<=t)
{
tindex=i;
break;
}
}
if(sindex==-1||tindex==-1)
{
printf("查找失败\n");
}
for(int i=0;i<tindex-sindex;i++)
{
L.data[sindex+i]=L.data[tindex+i+1];
}
L.len-=(tindex-sindex);
}
void deleterepeat(SqList &L) //单调去重
{
int locatelem=0;
for(int i=0;i<L.len;i++)
{
if(locatelem=0||L.data[locatelem]!=L.data[i])
{
L.data[locatelem]=L.data[i];
locatelem++;
}
}
L.len=locatelem;
}
void minstrcat(SqList &L1 ,SqList &L2, SqList &L3) //最小值法
{
L3.curlen=0;
L3.len=L1.len+L2.len;
int i=0;
int j=L2.len-1;
while(i<L1.len&&j>=0)
{
if (L1.data[i] < L2.data[j]) {
L3.data[L3.curlen] = L1.data[i];
L3.curlen += 1;
i++;
} else if (L1.data[i] > L2.data[j]) {
L3.data[L3.curlen] = L2.data[j];
L3.curlen++;
j--;
}
}
while(i<L1.data[i])
{
L3.data[L3.curlen]=L1.data[i];
L3.curlen+=1;
i++;
}
while (j>=0)
{
L3.data[L3.curlen]=L2.data[j];
L3.curlen++;
j--;
}
free(L1.data);
free(L2.data);
L1.len=L2.len=0;
L1.curlen=L2.curlen=0;
}
void insertsort(int r,SqList &L) //插入排序
{
int curelem=r;
int i=curelem-1;
while(curelem<L.len)
{
int e=L.data[curelem];
while (i>=0)
{
if(e>L.data[i])
{
break;
}
L.data[i+1]=L.data[i];
i--;
}
curelem++;
L.data[i+1]=e;
}
}
void jiaoji(SqList &L1 ,SqList L2) //交集算法
{
int curlenth=0;
int i=0;
int j=0;
while (i<L1.len&&j<L2.len) {
if (L1.data[i] < L2.data[j]) {
i++;
} else if (L1.data[i] > L2.data[j]) {
j++;
} else {
if (curlenth == 0 || L1.data[curlenth - 1] != L1.data[i]) {
L1.data[curlenth] = L1.data[i];
curlenth++;
}
i++;
j++;
}
L1.len=curlenth;
}