- 顺序表删除最小元素,返回被删元素的值,空出来的位置由最后一个一个元素填补。
bool Del_min(SqList *L, ElemType *value)
{
if(L->length==0)
return ERROR;
value=L.data[0];
int pos=0;
for(int i=1;i<L.length;i++)
if()
}
//对于元素L.data[i] (i属于[0,L.length/2]),将其与L.data[L.lenghth-i-1]交换
void Reverse(SqList *L)
{
ElemType temp;
for(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;
}
}
void del_x_1(SqList *L,ElemType x)
{
int k=0;
for(int i=0;i<L.length;i++)
if(L.data[i]!=x)
{
L.data[k]=L.data[i];
k++;
}
L.length=k;
}
bool Del_Same(SqList *L)
{
if(L.length==0)
return false;
int i,j;
for(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;
}
bool Merge(SqList A,SqList B, SqList *C)
{
if(A.length+B.length>c.maxsize)
return false;
int i=0,j=0,k=0;
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 false;
}
- 线性表互换 ,数组A[M+N]中有两个线性表(a1,..am)和(b1,…bm);写一个函数将两个表互换,即将(b1,…bn)放到(a1,..am)的前面
typedef int DatatType;
void Reverse(DataType A[],int left,int right,int arraysize)
{
if(left>=right || right>=arraySize) return;
int mid>=(left+right)/2;
for(int i=0;i<=mid-left;i++)
{
DataType temp=A[left+i];
A[left+i]=A[right-i];
A[right-i]=temp;
}
}
void Exchange(DataType A[],int m,int n, int arraySize)
{
Reverse(A,0,m+n-1,arraysize);
Reverse(A,0,n-1,arraysize);
Reverse(A,n,m+n-1,arraysize);
}
void SearchExchangeInsert(ElemType A[],ElemType x)
{
int low=0,high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(A[mid]==x) break;
else if(A[mid]<x) low=mid+1;
else high=mid-1;
}
if(A[mid]==x && mid!=n-1)
{
t=A[mid];
A[mid]=A[mid+1];
A[mid+1]=t;
}
if(low>high)
{
for(i=n-1;i>high;i--)
A[i+1]=A[i];
A[i+1]=x;
}
}