『壹』 c语言中什么是索引

1.索引表的类型可定义如下:
struct IndexItem
{
IndexKeyType index;
//IndexKeyType为事先定义的索引值类型

int start;
//子表中第一个元素所在的下标位置

int length;
//子表的长度域
};
2.首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定对应子表在主表中的开始位置和长度,然后再根据给定的关键字K2,在对应的子表中查找出
3。关键字等于K2的元素。
设数组A是具有mainlist类型的一个主表,数组B是具有indexlist类型的在主表A上建立的一个索引表,m为索引表B的实际长度,即所含的索引项的个数,K1和K2分别为给定
带查找的索引值和关键字,并假定每个子表采用顺序存储,则索引查找算法为:

int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)
{//利用主表A和大小为 m 的索引表B索引查找索引值为K1,关键字为K2的记录
//返回该记录在主表中的下标位置,若查找失败则返回-1
int i, j;
for (i = 0; i < m; i++)
if (K1 == B[i].index)
break;
if (i == m)
return -1; //查找失败
j = B[i].start;
while (j < B[i].start + B[i].length)
{
if (K2 == A[j].key)
break;
else
j++;
}
if (j < B[i].start + B[i].length)
return j; //查找成功
else
return -1; //查找失败
}

『贰』 C语言:查找

你这个题目没说准确吧,如果序列中有多个相同的数怎么处理?

『叁』 求一个C语言的程序 要求能检索关键字

#include<stdio.h>
#include<string.h>

intcount(constchar*data,constchar*key)
{
/*在data中查找key出现的次数*/
constchar*pos=data;
intresult=0,len=strlen(key);

while((pos=(strstr(pos,key)))!=NULL)
{
++result;
if(pos[len]=='')
break;
else
pos+=len;
}

returnresult;
}

intmain()

{
printf("%d ",count("abcabcdef","abc"));/*测试查找函数*/
return0;
}

『肆』 c语言搜索代码

/*宽度优先搜索*/
#define Adj 1
#define Unadi 0
#define N 6
typedef struct
{int Number[N];
int front;
int rear;
}Queue,*pQueue;

void InitQueue(pQueue q)
{q->front=0;
q->rear=0;
}

void EnQueue(pQueue q,int number)
{int rear;
rear=(q->rear+1)%N;
if(rear==q->front)
{printf("The Queue is full,cannot enter the queue.");
}
else
{q->Number[q->rear]=number;
q->rear=rear;
}
}

int OutQueue(pQueue q)
{int number;
if(q->front==q->rear)
{printf("The Queue is empty.");
return -1;
}
number=q->Number[q->front];
q->front=(q->front+1)%N;
return number;

}

int Isempty(pQueue q)
{if(q->front==q->rear)return 1;
else return 0;
}

void BFSTraverse(int v,int (*a)[6],int *dist,int *prev)
{Queue q;
int number,i;
int s[N];
InitQueue(&q);
for(i=1;i<N;i++)
s[i]=0;
s[v]=1;
prev[v]=v;
dist[v]=0;
EnQueue(&q,v);
while(!Isempty(&q))
{ number=OutQueue(&q);
for(i=1;i<N;i++)
{if(!s[i]&&a[number][i]==Adj)
{dist[i]=dist[number]+1;
prev[i]=number;
s[i]=1;
EnQueue(&q,i);
}
}
}
}
main()
{int a[N][N];
int v,dist[N],prev[N],i,j,k;
printf("please input the relation of points:");
for(i=1;i<N;i++)
for(j=1;j<N;j++)
scanf("%d",&a[i][j]);
printf("Please input the number of initial point:");
scanf("%d",&v);
BFSTraverse(v,a,dist,prev);
for(i=1;i<N;i++)
{printf("The %d number point's distant is:%d\n",i,dist[i]);
k=i;
while(k!=v)
{printf("%d<<--",k);
k=prev[k];
}
printf("%d\n",v);
}
}
宽度优先搜索需借助队列的帮助
2.深度优先搜索没时间在再写,抱歉



『伍』 c语言如何查找字符串

C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个回字符。

C语言strchr()函数:

查找答某字符在字符串中首次出现的位置

头文件:#include <string.h>

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:

char * strchr (const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。

『陆』 C语言如何用函数来实现搜索

#include<stdio.h>
intsearch(inta[],intb,intc,inti)
{
intx,y,z;
x=i+1;
z=b-1;
y=(x+z)/2;
while(x<=z)
{
if(a[y]>c)
{
z=y-1;
y=(x+z)/2;
continue;
}
if(a[y]<c)
{
x=y+1;
y=(x+z)/2;
continue;
}
returny+1;
}
return-1;

}

intmain()
{
inti,m,pos;
scanf("%d",&m);
inta[m];
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i<m;i++)
{
pos=search(a,m,a[i],i);
if(pos!=-1)
{
printf("FOUNDa[%d]=%d,positionis%d ",i,a[i],i+1);
return0;
}
}
if(pos==-1)
{
printf("NOTFOUND ");
}
return0;
}

这种查找方法的数组必须是从小到大的,用遍历的话就没这个问题了。

『柒』 如何用c语言编写检索程序

#include"stdio.h"
#include<stdlib.h>
#include<string.h>
#include"time.h"
chars[2000][1501];
intmain(intargc,char*argv[]){
chart[26],f[5]="ABCD",*pt;
inti,j,k,n;
srand((unsigned)time(NULL));
for(i=0;i<2000;i++){
for(n=rand()%501+1000,j=0;j<n;s[i][j++]=f[rand()%4]);
s[i][j]='';
}
for(i=0;i<25;t[i++]=f[rand()%4]);
t[i]='';
printf("Lookingfor'%s'... ",t);
for(n=j=k=i=0;i<2000;i++){
if((pt=strstr(s[i],t))&&strstr(pt+1,t)){
pt=NULL;
n=2;
break;
}
if(pt&&++n==1)
k=i,j=pt-s[i];
if(n>1)
break;
}
if(n==1)
printf("Thereisonlyone'%s',whichbeganfroms[%d][%d]. ",t,k,j);
elseif(n>1)
printf("Findmore... ");
else
printf("Couldnotfind... ");
return0;
}

运行样例:

『捌』 C语言查找的用法

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineN20

voidSort(inta[],intn){
inti,j,k,t;
for(i=0;i<n-1;++i){
=i;
for(j=i+1;j<n;++j){
if(a[k]>a[j])k=j;
}
if(i!=k){
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}

intFind(inta[],intn,intx){
intlow=0,high=n-1,mid;
while(low<=high){
mid=(low+high)/2;
if(x==a[mid])returnmid;
elseif(x>a[mid])low=mid+1;
elsehigh=mid-1;
}
return-1;
}

voidShow(inta[],intn){
inti;
for(i=0;i<n;++i){
printf("%d",a[i]);
}
printf(" ");
}

intmain(){
inta[20],i,x,res;
srand((unsigned)time(NULL));
for(i=0;i<N;++i)
a[i]=rand()%N;//每个数都在1--100之间
Show(a,N);
Sort(a,N);
Show(a,N);
x=rand()%100+1;
res=Find(a,N,x);
if(res>=0)printf("数值%d的下标为%d。 ",a[res],res);
elseprintf("数列中没有找到数值%d。 ",x);
return0;
}

『玖』 c语言中如何用字母去检索汉字名称 谢谢

#include<stdio.h>
void main()
{
char *a[26]={ "啊" , "吧" , "才" , "的" , "额",
"飞" , "个" , "好" , "I" , "就",
"看" , "了" , "吗" , "你" , "哦",
"平" , "去" , "人" , "是" , "他",
"U" , "V" , "我" , "想" , "一", "在"};
char c;
printf("请输入一个字符:");
c=getchar();
if(c<='z'&&c>='a')
printf("%s\n",a[c-'a']);
else
printf("输入的不是拼音字母!\n");

}
//程序在VC ++6.0编译环境中编译运行成功。如果要查找很多字,建议使用数据库

『拾』 C语言查找函数

首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。
其次,传值版和传地址一塌糊涂,完全就是权乱写么。
scanf的第二个参数是地址,如果本身不是指针则需要取址符。
我给你重写了算了
#include<stdio.h>
int Retrieve(int array[],int length,int x);/*形参x直接传值就可以了*/
int main()
{
int *a,x;
int length,i;

scanf("%d",&length);
a = (int)malloc(sizeof(int)*length); /*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/