永发信息网

C++、数据结构高手快速地进入.....(关于简单顺序查找的监视哨问题)

答案:2  悬赏:0  手机版
解决时间 2021-03-07 15:26
  • 提问者网友:战皆罪
  • 2021-03-06 15:55
题目是这样的:设顺序表中的关键字是递增有序的,将监视哨设在高下标端,设计算法设计实现简单顺序查找
下面是我的算法:
#include"stdio.h"
#include"malloc.h"
#define maxlen 50
typedef struct
{int data[maxlen];
int length;
}RecordList;
RecordList *SqLset(){
RecordList *L;
int i=0,c;
L=(RecordList *)malloc(sizeof(RecordList));
scanf("%d",&c);
L->length=0;
while(c!=0){ //'0'为输入结束标志
L->data[i]=c;
L->length++;
i++;
scanf("%d",&c);
}
return L;
}
int Search(RecordList *L)
{int i=0,m,x,position=0;
printf("请输入你需要查找的数值:");
scanf("%d",&x);
m=L->length;
//L->data[m]=x;
while(m!=i){
if(L->data[i]==x){
position=i+1;
break;}
i++;}
return position;

}

void main()
{int i;
RecordList *A;
A=SqLset();
for(i=0;i<=A->length-1;i++)
printf("%d ",A->data[i]);
printf("\n%d\n",A->length);
printf("%d",Search(A));

}
算法本身并无任何问题,可以运行实现,可是我这个监视哨貌似可有可无,根本没用处的。所以,想请教下高手指导下,是不是需要改进一下什么的,或者重新设计一个新的算法。呵呵,小弟感谢万分
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-03-06 17:07
监视哨即所查值,应该放在下标为0端,查找从高端开始。如果存在所查值,返回position,如果没有查找的值,则返回position=0,表示查找失败。
监视哨免去了查找过程中每一次比较都要判断查找位置是否越界,提高查找速度。
全部回答
  • 1楼网友:街头电车
  • 2021-03-06 18:04
搜一下:C++、数据结构高手快速地进入.....(关于简单顺序查找的监视哨问题)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯