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]);
}