資料結構原始碼筆記(C語言) 索引檔案建立和查詢

2021-10-08 21:53:08 字數 3937 閱讀 3716

//實現索引檔案建立和查詢演算法

#include

#include

#include

#include

#define maxrec 100

//最多的記錄個數

typedef

struct index //定義索引檔案結構

index;

typedef

struct sdata//定義主檔案結構

student;

void

delall()

//清除主檔案和索引檔案的全部記錄if(

(idxfile=

fopen

("idx.dat"

,"wb"))

==null

)fclose

(mfile)

;fclose

(idxfile);}

void

insertsort

(index r,

int n)

//對r[0......n-1]按遞增有序進行直接插入排序

r[j+1]

=temp;

//在j+1處插入r[i]}}

void

creatidxfile()

//建立索引檔案if(

(idxfile=

fopen

("index.dat"

,"wb"))

==null

) i=0;

while((

fread

(&st,

sizeof

(student),1

,mfile))!=

null

)insertsort

(idx,n)

;//對idx陣列按no域值排序

rewind

(idxfile)

;for

(i=0

;i)fwrite

(&idx[i]

,sizeof

(index),1

,idxfile)

;fclose

(mfile)

;fclose

(idxfile);}

void

inputmainfile()

//新增乙個主檔案記錄

printf

(">>學號,姓名,性別,年齡,位址,系別,專業:");

scanf

("%s%s%d%d%s%s%s"

,st.num,st.name,

&st.***,

&st.age,st.addr,st.dep,st.spec);if

(fwrite

(&st,

sizeof

(student),1

,mfile)!=1

)fclose

(mfile);}

void

outputmainfile()

//輸出主檔案全部記錄

while((

fread

(&st,

sizeof

(student),1

,mfile))!=

null

)fclose

(mfile);}

void

outputidxfile()

//輸出索引檔案全部記錄

while((

fread

(&irec,

sizeof

(index),1

,idxfile))!=

null

)printf

(">>(學號:記錄號)%s: %d\n"

,irec.num,irec.offset)

;fclose

(idxfile);}

void

readindexfile

(index idx[maxrec]

,int

&len)

//讀索引檔案資料存入idx陣列中

fseek

(idxfile,0,

2); j=

ftell

(idxfile)

; len=j/

sizeof

(index)

;fread

(idx,

sizeof

(index)

,len,idxfile)

;fclose

(idxfile);}

intsearchnum

(index idx,

int len,

char no)

//在索引檔案中查詢no對應的記錄號

return-1

;}void

findstudent()

readindexfile

(idx,len)

;//讀索引陣列idx

printf

("輸入學號:");

scanf

("%s"

,no)

; i=

searchnum

(idx,len,no)

;//在idx中查詢

if(i==-1

)printf

(">>學號 %s 不存在\n"

,no)

;else

fclose

(mfile);}

intmain()

}while

(sel!=0)

;return0;

}

資料結構原始碼筆記(c語言描述)彙總:

資料結構原始碼筆記(c語言):英文單詞按字典序排序的基數排序

資料結構原始碼筆記(c語言):直接插入排序

資料結構原始碼筆記(c語言):直接選擇排序

資料結構原始碼筆記(c語言):置換-選擇演算法

資料結構原始碼筆記(c語言):huffman樹字元編碼

資料結構原始碼筆記(c語言):josephus問題之順序表

資料結構原始碼筆記(c語言):josephus問題之迴圈鏈結表

資料結構原始碼筆記(c語言):多項式合併

資料結構原始碼筆記(c語言):二叉樹之葉子結點旋轉銷毀

資料結構原始碼筆記(c語言):哈夫曼樹

資料結構原始碼筆記(c語言):集合的位向量表示

資料結構原始碼筆記(c語言):鏈結佇列

資料結構原始碼筆記(c語言):鏈結棧

資料結構原始碼筆記(c語言):線性表的單鏈表示

資料結構原始碼筆記(c語言):線性表的順序表示

資料結構原始碼筆記(c語言):棧的基本操作

資料結構原始碼筆記(c語言):中綴表示式

資料結構原始碼筆記(c語言):希爾插入排序

資料結構原始碼筆記(c語言):索引檔案建立和查詢

資料結構原始碼筆記(c語言):氣泡排序

資料結構原始碼筆記(c語言):快速排序

資料結構原始碼筆記(c語言):可變長度字串的快速排序

資料結構原始碼筆記(c語言):基數排序

資料結構原始碼筆記(c語言):二路歸併排序

資料結構原始碼筆記(c語言):堆排序

資料結構原始碼筆記(c語言):二叉樹搜尋樹kruskal

資料結構原始碼筆記(c語言):二叉搜尋樹prim

資料結構原始碼筆記(c語言):最短路徑弗洛伊德演算法

資料結構原始碼筆記(c語言):深度、廣度優先生成樹

資料結構原始碼筆記(c語言):鄰接矩陣轉化鄰接表

資料結構原始碼筆記(c語言):統計字串**現的字元及其次數

資料結構原始碼筆記(c語言):順序查詢

資料結構原始碼筆記(c語言):分塊法查詢

資料結構原始碼筆記(c語言):二分查詢

資料結構原始碼筆記(c語言):二叉樹遍歷

資料結構原始碼筆記(c語言):二叉平衡樹的相關操作演算法

資料結構原始碼筆記(c語言):二叉排序樹的基本操作演算法

資料結構原始碼筆記(C語言) 堆排序

實現堆排序演算法 include include define maxe 20 typedef int keytype typedef char infotype 10 typedef struct rectype void dispheap rectype r,int i,int n 按遞增有序進...

資料結構原始碼筆記(C語言) 鏈結棧

鏈結棧 型別和介面函式宣告 include include typedef int datatype struct node 單鏈表結點 typedef struct node pnode 指向結點的指標型別 struct node struct linkstack 鏈結棧型別定義 typedef ...

資料結構實踐 索引檔案

本文是針對 資料結構基礎系列 11 檔案 中的實踐專案。專案 索引檔案 有若干學生的成績資料如下,將這些資料儲存到st陣列中 學號 姓名 年齡 性別 語文 數學 英語 1 陳華 20 男 78 90 84 5 張明 21 男 78 68 92 8 王英 20 女 86 81 86 3 劉麗 21 女...