本文目录一览:
- 1、C语言中什么是索引??
- 2、用c语言怎么做索引数组
- 3、C语言,创建了一个文件,包含一个结构体变量,按结构体中的某一项进行排序,如何创建与之相匹配的索引文件
- 4、C语言文件中怎么对存入文件的数据设置索引,在使用的时候可以按照索引的类别来调用它?
- 5、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语言怎么做索引数组
用索引做排序就可以了
void select_sort(int *a, int len) {
int Min;
int *index;
index=(int *)new int[len];
for ( int i=0;ilen;i++ ) index[i]=i;
for (int i = 0; i len - 1; i++) {
for (int j = 1 + i; j len; j++) {
if (a[index[i]] a[index[j]]) {
Min=index[i];
index[i]=index[j];
index[j]=Min;
}
}
}
for ( int i=0;ilen;i++ ) coutindex[i]' '; coutendl;
for ( int i=0;ilen;i++ ) couta[index[i]]' '; coutendl;
delete [] index;
}
C语言,创建了一个文件,包含一个结构体变量,按结构体中的某一项进行排序,如何创建与之相匹配的索引文件
可以用xml文件创建,xml根据需要(比如:奥运的奖牌排序和总分排序)可以定义主索引和若干辅助索引。
C语言文件中怎么对存入文件的数据设置索引,在使用的时候可以按照索引的类别来调用它?
你可在写入主体文件数据时,顺便建立索引表写入本文件或另一个文件,可以在读主体数据的文件前,先读取索性表的文件,然后根据索引表指向的位置定位文件流指针读取主体数据文件。
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
using namespace std;
FILE *p;
void md(long long int m)
{
long long int shi,fen,miao,hmiao;
hmiao=m%3600000;
m=m/1000;
if(m/360024)
{
shi = m/3600;
fen = m/60%60;
miao = m%60;
coutendl"换算等于"shi"时:"fen"分:"miao"秒:"(hmiao-miao*1000)"毫秒"endl;
}
else printf("输入数值太大");
}
class CBrowseDir
{
protected:
char m_szInitDir[_MAX_PATH];
public:
CBrowseDir();
bool SetInitDir(const char *dir);
bool BeginBrowse(const char *filespec);
protected:
bool BrowseDir(const char *dir,const char *filespec);
virtual bool ProcessFile(const char *filename);
virtual void ProcessDir(const char *currentdir,const char *parentdir);
};
CBrowseDir::CBrowseDir()
{
getcwd(m_szInitDir,_MAX_PATH);
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");
}
bool CBrowseDir::SetInitDir(const char *dir)
{
if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)
return false;
if (_chdir(m_szInitDir) != 0)
return false;
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");
return true;
}
bool CBrowseDir::BeginBrowse(const char *filespec)
{
ProcessDir(m_szInitDir,NULL);
return BrowseDir(m_szInitDir,filespec);
}
bool CBrowseDir::BrowseDir(const char *dir,const char *filespec)
{
_chdir(dir);
long hFile;
_finddata_t fileinfo;
if ((hFile=_findfirst(filespec,fileinfo)) != -1)
{
do
{
if (!(fileinfo.attrib _A_SUBDIR))
{
char filename[_MAX_PATH];
strcpy(filename,dir);
strcat(filename,fileinfo.name);
puts(filename);
fputs(filename,p);
fprintf(p,"\n");
if (!ProcessFile(filename))
return false;
}
} 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)
{
char subdir[_MAX_PATH];
strcpy(subdir,dir);
strcat(subdir,fileinfo.name);
strcat(subdir,"\\");
ProcessDir(subdir,dir);
if (!BrowseDir(subdir,filespec))
return false;
}
}
} while (_findnext(hFile,fileinfo) == 0);
_findclose(hFile);
}
return true;
}
bool CBrowseDir::ProcessFile(const char *filename)
{
return true;
}
void CBrowseDir::ProcessDir(const char
*currentdir,const char *parentdir)
{
}
class CStatDir:public CBrowseDir
{
protected:
long long int m_nFileCount;
long long int m_nSubdirCount;
public:
CStatDir()
{
m_nFileCount=m_nSubdirCount=0;
}
int GetFileCount()
{
return m_nFileCount;
}
int GetSubdirCount()
{
return m_nSubdirCount-1;
}
protected:
virtual bool ProcessFile(const char *filename)
{
m_nFileCount++;
return CBrowseDir::ProcessFile(filename);
}
virtual void ProcessDir
(const char *currentdir,const char *parentdir)
{
m_nSubdirCount++;
CBrowseDir::ProcessDir(currentdir,parentdir);
}
};
int main()
{
int DiskCount = 0;
DWORD DiskInfo = GetLogicalDrives();
while(DiskInfo)
{
if(DiskInfo1)
{
++DiskCount;
}
DiskInfo = DiskInfo 1;
}
cout"逻辑磁盘数量:"DiskCountendl;
int DSLength = GetLogicalDriveStrings(0,NULL);
char* DStr = new char[DSLength];
GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
int DType;
int si=0;
BOOL fResult;
unsigned long long int i64FreeBytesToCaller;
unsigned long long intTotalBytes;
unsigned long long int i64FreeBytes;
unsigned long long int i64TotalBytes;
int g=0,k=0;
char name[100];
for(int i=0; iDSLength/4; ++i)
{
char dir[5]= {DStr[si],':','\\'};
coutdir;
DType = GetDriveType(DStr+i*4);
if(DType == DRIVE_FIXED)
{
cout"硬盘";
name[k]=DStr[si];
k++;
g++;
}
else if(DType == DRIVE_CDROM)
{
cout"光驱";
}
else if(DType == DRIVE_REMOVABLE)
{
cout"可移动式磁盘";
}
else if(DType == DRIVE_REMOTE)
{
cout"网络磁盘";
}
else if(DType == DRIVE_RAMDISK)
{
cout"虚拟RAM磁盘";
}
else if (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--;
}
coutendl;
si+=4;
}
cout"共有硬盘"g"块"endl;
g=k+1;
cout"共有未加密的硬盘"g"块"endl;
cout"正在启动索引程序"endl;
int i;
p=fopen("list.txt","a+");
if(g==1)
{
cout"您只有一个c盘"endl;
cout"检测C盘可能会让程序崩溃"endl;
}
clock_t start,finish;
start=clock();
for(i=1;ig;i++)
{
fprintf(p,"%c盘内的文件如下\n",name[i]);
char buf[6] = {name[i],':','\\'};
CStatDir statdir;
statdir.SetInitDir(buf);
statdir.BeginBrowse("*.*");
fprintf(p,"文件总数: %d\n子目录总数:%d\n",statdir.GetFileCount(),statdir.GetSubdirCount());
printf("文件总数: %d\n子目录总数:%d\n",statdir.GetFileCount(),statdir.GetSubdirCount());
}
cout"全部完成"endl;
finish=clock();
cout"用时"(finish-start)"毫秒";
md(finish-start);
return 0;
}