7.若线性表中各结点的查找概率不等,则可用如下策略提高顺序查找的效率:若找到指定的结点,则将该结点和其前驱(若存在)结点交换,使得经常被查找的结点尽量位于表的前端。试对线性表的顺序存储结构和链式结构写出实现上述策略的顺序查找算法。
- 顺序结构
算法思想:检索时从表头开始向后顺序扫描,若找到指定结点,则将该结点和其前驱结点(若存在)交换。算法实现如下:
int SeqSrch(RcdType R[], ElemType k){
//顺序查找线性表,找到后和其前面的元素交换
int i=0;
int temp;
while(R[i].key!=k)&&(i<n))
i++; //从前向后顺序寻找指定的结点
if(i<n&&i>0){
temp=R[i];
R[i]=R[i-1];
R[i