逆置元素
void reverse(Sqlist &L)
{
int i,j;
int temp;
for(i=0;j=L.length-1;i<j;++i;--j)
{
temp=L.data[i];
L.data[i]=L.data[j];
L.data[j]=temp;
}
}
删除算法的扩展(删除下标i-j的元素)
void delete(Sqlist &L,int i,int j)
{
int k,delta;
deleta =j-i+1;
for(k=j+1;k<L.length;++k)
{
L.data[k-deleta]=L.data[k];
}
L.length-=delta;
}
将顺序表中所有小于表头的元素的整数放在前半部分,大于表头元素的整数放在后半部分
void move(Sqlist &L)
{
int temp;
int i=0,j=L.length-1;
temp=L.data[i];
while(i<j)
{
while(i<j&&L.data[j]>temp) --j;
//j从右往左扫描,当碰到第一个比temp小的元素时停止,并且每一步都要判断i是否小于j
if(i<j)
{
L.data[i]=L.data[j];
++i;//L.data[i]被替换后记得,i要后移一位
}
while(i<j&&L.data[i]<temp) ++i;
//i从左往右扫描,当碰到第一个比temp大的元素时停止,并且每一步都要判断i是否小于j
if(i<j)
{
L.data[j]=L.data[i];
--j;
}
}
L.data[i]=temp;
}