过程:n1n1
i0j i
n(n1)(n2) (n j)
6
--==
++ -=
∑∑
第二章
2.3 已知顺序表La中数据元素按非递减有序排列。试写一个算法,将元素x插到La的合适位置上,保持该表的有序性。
思路:先判断线性表的存储空间是否满,若满返回Error;否则从后向前先移动数据,找到合适的位置插入。
Status Insert_SqList(SqList &La,int x)//把x 插入递增有序表La 中
{
if(La.length==La.listsize) return ERROR;
for(i=La.length-1;La.elem[i]>x&&i>=0;i--)
La.elem[i+1]=La.elem[i];
La.elem[i+1]=x;
La.length++;
return OK;
}//Insert_SqList
2.5 试写一个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表
(a
1,a
2
, ..., a
n-1
,a
n
)逆置为(a
n
,a
n-1
, ..., a
2
,a
1
)
//思路就是两个指示变量i,j同时分别从顺序表的开始和结尾处相向改变
void reverse(SqList &A)//顺序表的就地逆置
{
ElemType p;
for(i=1,j=A.length;i{
//A.elem[i]A.elem[j];
p=A.elem[i];
A.elem[i[=A.elem[j];
A.elem[j]=p;
}
}//reverse
2.7 已知线性表L采用顺序存储结构存放,对两种不同情况分别写出算法,删除L中多余的元素,使得L中没有重复元素:(1)L中数据元素无序排列;(2)L中数据元素非递减有序排列。