结构推理 若线性表中各结点的查找概率不等,则可用如下策略提高顺序查找的效率:若找到指定的结点,则将该结点和其前驱(若存在)结点交换,使得经常被查找的结点尽量位于表的前端。试对线性表的顺序存储结构写出实现上述策略的顺序查找算法。
【正确答案】#define MAXSIZE 100
   #define KEYTYPE int
   typedef struct
   {  KEYTYPE key;
   }SEQLIST;
   int seqsearchl(SEQLIST*r,int n,KEYTYPE k)
   {  int i;
       SEQLIST temp;
       i=i;
       r[n+1].key=k;
       while(r[i].key!=k)
           i++;
       if((i!=i)&&(i<n+i))
       (temp=r[i];
           r[i]=r[i-1];
           r[i-1]=temp;
           i--;
       }
       return(i/%(n+i));
   }
   main()
   {  SEQLIST a[MAXSIZE];
       int n,k,i;
       scanf("/%d",&n);
       for(i=1;i<=n;i++)
           scanf("/%d",&a[i].key);
       printf("输入待查元素关键字:");
       scanf("/%d",&k);
       i=seqsearchl(a,n,k);
       if(i==0)
           printf("表中待查元素不存在");
       else
           printf("表中待查元素的位置/%d",i);
   }
【答案解析】