標頭檔案:sqlistsearch.h
#include const int maxsize = 100; //順序表中最多元素個數
template struct rectype //順序表記錄型別
;template struct idxtype //索引表型別
;template class sqlistsearchclass //順序表查詢類模板
;
原始檔:sqlistsearch.cpp
#include "sqlistsearch.h"
template sqlistsearchclass::sqlistsearchclass() //建構函式,用於查詢順序表的初始化
template void sqlistsearchclass::setk(t a, int n) //設定順序表的關鍵字
template int sqlistsearchclass::binsearch(t k) //拆半查詢非遞迴演算法
return 0;
}template int sqlistsearchclass::binsearch1(t k) //拆半查詢遞迴演算法
template int sqlistsearchclass::binsearch11(int low, int high, t k) //被binsearch1函式呼叫
else return 0;
}template int sqlistsearchclass::idxsearch(idxtypei, int b, t k) //在順序表r[0..length-1]和索引表i[0..b-1]中查詢關鍵字k的記錄
i = i[high + 1].link;
while (i <= i[high + 1].link + s - 1 && r[i].key != k)
if (i <= i[high + 1].link + s - 1)
return i + 1;
else
return 0;
}template void sqlistsearchclass::dispr() //輸出順序表r中的元素
, n1 = 10;
int b = , n2 = 10;
int c = , n3 = 24, b = 5;
//**********=順序查詢
s.setk(a, n1);
cout << "關鍵字序列:";
s.dispr();
i = s.seqsearch(k);
if (i>0)
cout << "順序查詢:第" << i << "個記錄的關鍵字是" << k << endl;
else
cout << "順序查詢:未找到關鍵字" << k << endl;
//**********拆半查詢查詢=
k = 7;
s1.setk(b, n2);
cout << "關鍵字序列:";
s1.dispr();
i = s1.binsearch(k);
if (i>0)
cout << "拆半查詢1:第" << i << "個記錄的關鍵字是" << k << endl;
else
cout << "拆半查詢1:未找到關鍵字" << k << endl;
i = s1.binsearch1(k);
if (i>0)
cout << "拆半查詢2:第" << i << "個記錄的關鍵字是" << k << endl;
else
cout << "拆半查詢2:未找到關鍵字" << k << endl;
//**********=分塊查詢查詢
k = 87;
idxtypei[maxsize];
i[0].key = 14; i[0].link = 0;
i[1].key = 34; i[1].link = 5;
i[2].key = 66; i[2].link = 10;
i[3].key = 85; i[3].link = 15;
i[4].key = 100; i[4].link = 20;
s2.setk(c, n3);
cout << "關鍵字序列:";
s2.dispr();
i = s2.idxsearch(i, b, k);
if (i>0)
cout << "分塊查詢:第" << i << "個記錄的關鍵字是" << k << endl;
else
cout << "分塊查詢:未找到關鍵字" << k << endl;
}
線性表查詢
查詢的基本概念 廣義地講 查詢是在具有相同型別的記錄構成的集合中找出滿足給定條件的記錄。給定的查詢條件可能是多種多樣的,為了便於討論,我們把查詢條件限制為 匹配 即在查詢關鍵碼等於給定值的記錄。順序查詢 順序查詢又稱線性查詢,是最基本的查詢技術之一,其基本思想為 從線性表的一端向另外一端逐個將關鍵碼...
查詢 線性表的查詢技術
查詢基本概念 列表 由同一型別的資料元素組成的集合。關鍵碼 資料元素中的某個資料項,可以標識列表中的乙個或一組資料元素。鍵值 關鍵碼的值。主關鍵碼 可以唯一地標識乙個記錄的關鍵碼。次關鍵碼 不能唯一地標識乙個記錄的關鍵碼。查詢 在具有相同型別的記錄構成的集合中找出滿足給定條件的記錄。查詢的結果 若在...
查詢 基於線性表
1 順序查詢 對於乙個無序的,即關鍵字沒有排序的線性表來說,用所給的關鍵字與線性表中的所有記錄逐個進行比較,直到成功或者失敗。平均查詢長度 asl n 1 2 ii 最近最少使用法 lur 也叫作移至前端法,如果找到一條記錄就把他移至線性表的最前面,而把其他記錄後退乙個位置。顯然,這種方式使用鍊錶來...