c語言索引搜索如何建立索引表

#include<cstdlib>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<direct.h>
#include<string.h>
#include<io.h>
#include<stdio.h>
#include<iostream>
#include<windows.h>
#include<time.h>
usingnamespacestd;
FILE*p;
voidmd(longlongintm)
{
longlongintshi,fen,miao,hmiao;
hmiao=m%3600000;
m=m/1000;
if(m/3600<24)
{
shi=m/3600;
fen=m/60%60;
miao=m%60;
cout<<endl<<"換算等於"<<shi<<"時:"<<fen<<"分:"<<miao<<"秒:"<<(hmiao-miao*1000)<<"毫秒"<<endl;
}
elseprintf("輸入數值太大");
}
classCBrowseDir
{
protected:
charm_szInitDir[_MAX_PATH];
public:
CBrowseDir();
boolSetInitDir(constchar*dir);
boolBeginBrowse(constchar*filespec);
protected:
boolBrowseDir(constchar*dir,constchar*filespec);
virtualboolProcessFile(constchar*filename);
virtualvoidProcessDir(constchar*currentdir,constchar*parentdir);
};
CBrowseDir::CBrowseDir()
{
getcwd(m_szInitDir,_MAX_PATH);
intlen=strlen(m_szInitDir);
if(m_szInitDir[len-1]!='\')
(m_szInitDir,"\");
}

boolCBrowseDir::SetInitDir(constchar*dir)
{
if(_fullpath(m_szInitDir,dir,_MAX_PATH)==NULL)
returnfalse;
if(_chdir(m_szInitDir)!=0)
returnfalse;
intlen=strlen(m_szInitDir);
if(m_szInitDir[len-1]!='\')
strcat(m_szInitDir,"\");
returntrue;
}
boolCBrowseDir::BeginBrowse(constchar*filespec)
{
ProcessDir(m_szInitDir,NULL);
returnBrowseDir(m_szInitDir,filespec);
}
boolCBrowseDir::BrowseDir(constchar*dir,constchar*filespec)
{
_chdir(dir);
longhFile;
_finddata_tfileinfo;
if((hFile=_findfirst(filespec,&fileinfo))!=-1)
{
do
{
if(!(fileinfo.attrib&_A_SUBDIR))
{
charfilename[_MAX_PATH];
strcpy(filename,dir);
strcat(filename,fileinfo.name);
puts(filename);
fputs(filename,p);
fprintf(p," ");
if(!ProcessFile(filename))
returnfalse;
}
}while(_findnext(hFile,&fileinfo)==0);
_findclose(hFile);
}
_chdir(dir);
if((hFile=_findfirst("*.*",&fileinfo))!=-1)
{
do
{
if((fileinfo.attrib&_A_SUBDIR))
{
if(strcmp(fileinfo.name,".")!=0&&strcmp
(fileinfo.name,"..")!=0)
{
charsubdir[_MAX_PATH];
strcpy(subdir,dir);
strcat(subdir,fileinfo.name);
strcat(subdir,"\");
ProcessDir(subdir,dir);
if(!BrowseDir(subdir,filespec))
returnfalse;
}
}
}while(_findnext(hFile,&fileinfo)==0);
_findclose(hFile);
}
returntrue;
}

boolCBrowseDir::ProcessFile(constchar*filename)
{
returntrue;
}

voidCBrowseDir::ProcessDir(constchar
*currentdir,constchar*parentdir)
{
}

classCStatDir:publicCBrowseDir
{
protected:
longlongintm_nFileCount;
longlongintm_nSubdirCount;

public:
CStatDir()
{
m_nFileCount=m_nSubdirCount=0;
}
intGetFileCount()
{
returnm_nFileCount;
}
intGetSubdirCount()
{
returnm_nSubdirCount-1;
}
protected:
virtualboolProcessFile(constchar*filename)
{
m_nFileCount++;
returnCBrowseDir::ProcessFile(filename);
}
virtualvoidProcessDir
(constchar*currentdir,constchar*parentdir)
{
m_nSubdirCount++;
CBrowseDir::ProcessDir(currentdir,parentdir);
}
};

intmain()
{
intDiskCount=0;
DWORDDiskInfo=GetLogicalDrives();
while(DiskInfo)
{
if(DiskInfo&1)
{
++DiskCount;
}
DiskInfo=DiskInfo>>1;
}
cout<<"邏輯磁碟數量:"<<DiskCount<<endl;
intDSLength=GetLogicalDriveStrings(0,NULL);
char*DStr=newchar[DSLength];
GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
intDType;
intsi=0;
BOOLfResult;
;
unsignedlonglongintTotalBytes;
;
;
intg=0,k=0;
charname[100];
for(inti=0;i<DSLength/4;++i)
{
chardir[5]={DStr[si],':','\'};
cout<<dir;
DType=GetDriveType(DStr+i*4);
if(DType==DRIVE_FIXED)
{
cout<<"硬碟";
name[k]=DStr[si];
k++;
g++;
}
elseif(DType==DRIVE_CDROM)
{
cout<<"光碟機";
}
elseif(DType==DRIVE_REMOVABLE)
{
cout<<"可移動式磁碟";
}
elseif(DType==DRIVE_REMOTE)
{
cout<<"網路磁碟";
}
elseif(DType==DRIVE_RAMDISK)
{
cout<<"虛擬RAM磁碟";
}
elseif(DType==DRIVE_UNKNOWN)
{
cout<<"未知設備";
}
fResult=GetDiskFreeSpaceEx(dir,(PULARGE_INTEGER)&i64FreeBytesToCaller,(PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes);
if(fResult)
{
if((i64TotalBytes/1024/1024)>1024)
cout<<"磁碟大小:"<<(float)i64TotalBytes/1024/1024/1024<<"GB";
else
cout<<"磁碟大小:"<<(float)i64TotalBytes/1024/1024<<"MB";
if((i64FreeBytesToCaller/1024/1024)>1024)
cout<<"剩餘空間:"<<(float)i64FreeBytesToCaller/1024/1024/1024<<"GB";
else
cout<<"剩餘空間:"<<(float)i64FreeBytesToCaller/1024/1024<<"MB";
}
else
{
cout<<"設備未准備好或啟用了系統加密!";
}
if(!fResult)
{
k--;
}
cout<<endl;
si+=4;
}
cout<<"共有硬碟"<<g<<"塊"<<endl;
g=k+1;
cout<<"共有未加密的硬碟"<<g<<"塊"<<endl;
cout<<"正在啟動索引程序"<<endl;
inti;
p=fopen("list.txt","a+");
if(g==1)
{
cout<<"您只有一個c盤"<<endl;
cout<<"檢測C盤可能會讓程序崩潰"<<endl;
}
clock_tstart,finish;
start=clock();
for(i=1;i<g;i++)
{
fprintf(p,"%c盤內的文件如下 ",name[i]);
charbuf[6]={name[i],':','\'};
CStatDirstatdir;
statdir.SetInitDir(buf);
statdir.BeginBrowse("*.*");
fprintf(p,"文件總數:%d 子目錄總數:%d ",statdir.GetFileCount(),statdir.GetSubdirCount());
printf("文件總數:%d 子目錄總數:%d ",statdir.GetFileCount(),statdir.GetSubdirCount());
}
cout<<"全部完成"<<endl;
finish=clock();
cout<<"用時"<<(finish-start)<<"毫秒";
md(finish-start);
return0;
}

② index在c語言中是什麼意思

index, 索引號, 一般從0開始計數。
返回字元串str中的下一個字中的開頭位元組的索引號,索引從prevEnd開始計數。 prevEnd是字元串str中的一個位置的標號。

③ c語言火c++中的索引運算符是什麼意思求指教!!!(越詳細越好)

這是c裡面的指針描述符和解引用符
例子
char *p;
char a;
p = &a;
*p = 'A';
現在a裡面已經儲存 A 了

④ c語言編寫索引數組

#include<stdio.h>
voidmain(void)
{
inti,j;
inta[5]={5,4,2,3,1};
intb[5]={0,1,2,3,4};//下標序號,數量多就自增賦值
intc,d;

printf("原數組: ");
for(i=0;i<5;i++)
{
printf("%2d",a[i]);
}
for(i=0;i<5;i++)
{
for(j=4-i;j<4;j++)
{
if(a[j]>a[j+1])//從小到大冒泡法交換大小同時交換下角標
{
c=a[j];
a[j]=a[j+1];
a[j+1]=c;

d=b[j];
b[j]=b[j+1];
b[j+1]=d;
}
}
}
printf(" 數組: ");
for(i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf(" 下標: ");
for(i=0;i<5;i++)
{
printf("%2d",b[i]);
}

getchar();
}

⑤ C語言里實現一張索引表

二維數組,或者枚舉
例如枚舉:
typedef enum {
a,
b,
c,
d
} list_enum;
這樣當調用這個枚舉的a時就等於0了,簡單吧!

⑥ 如何用C語言進行索引排序

用指針數組

⑦ 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語言索引數組排序

1、選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的數據元素中 選出 最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。所以這種排序的方法叫選擇法排序。

2、C語言參考實例:

#include<stdio.h>
voidmain()
{
inta[]={1,3,4,2,0};
inti,j,n=5;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)//每一遍都與當前a[i]比較
if(a[i]<a[j])//大的前移
{
intt=a[i];
a[i]=a[j];
a[j]=t;
}

for(i=0;i<n;i++)
printf("%d",a[i]);
}