您的位置:

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;

}