『壹』 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); /*申請一個內存空間用來存放數據,或者直接用一個大數組也可以*/