




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第九章第九章查查 找找何謂查找表何謂查找表 ? 查找表是由同一類型同一類型的數(shù)據(jù)元素(或記錄)構(gòu)成的集合集合。 由于“集合”中的數(shù)據(jù)元素之間存在著松散的關(guān)系,因此查找表是一種應(yīng)用靈便的結(jié)構(gòu)。對查找表經(jīng)常進行的對查找表經(jīng)常進行的操作操作: 1)查詢查詢某個“特定的”數(shù)據(jù)元素是否在查找表中; 2)檢索檢索某個“特定的”數(shù)據(jù)元素的各種屬性; 3)在查找表中插入插入一個數(shù)據(jù)元素; 4)從查找表中刪去刪去某個數(shù)據(jù)元素。僅作查詢和檢索操作的查找表。靜態(tài)查找表靜態(tài)查找表有時在查詢之后,還需要將“查詢”結(jié)果為“不在查找表中”的數(shù)據(jù)元素插入到查找表中;或者,從查找表中刪除其“查詢”結(jié)果為“在查找表中”的數(shù)據(jù)元素
2、。動態(tài)查找表動態(tài)查找表查找表可分為兩類查找表可分為兩類:是數(shù)據(jù)元素(或記錄)中某個數(shù)據(jù)項數(shù)據(jù)項的值,用以標識標識(識別)一個數(shù)據(jù)元素(或記錄)。關(guān)鍵字關(guān)鍵字 若此關(guān)鍵字可以識別唯一的唯一的一個記錄,則稱之謂“主關(guān)鍵字主關(guān)鍵字”。 若此關(guān)鍵字能識別若干若干記錄,則稱之謂“次關(guān)鍵字次關(guān)鍵字”。 根據(jù)給定的某個值,在查找表中確定一個其關(guān)鍵字等于給定值的數(shù)據(jù)元素或(記錄)。 查找查找 若查找表中存在這樣一個記錄,則稱“查找成功查找成功”。查找結(jié)果給出整個記錄的信息,或指示該記錄在查找表中的位置; 否則稱“查找不成功查找不成功”。查找結(jié)果給出“空記錄”或“空指針”。 由于查找表中的數(shù)據(jù)元素之間不存在明顯
3、的組織規(guī)律,因此不便于查找。 為了提高查找的效率, 需要在查找表中的元素之間人為地 附加某種確定的關(guān)系,換句話說, 用另外一種結(jié)構(gòu)來表示查找表用另外一種結(jié)構(gòu)來表示查找表。如何進行查找?如何進行查找?查找的方法取決于查找表的結(jié)構(gòu)。查找的方法取決于查找表的結(jié)構(gòu)。9.1 靜態(tài)查找表靜態(tài)查找表9.2 動態(tài)查找樹表動態(tài)查找樹表9.3 哈希表哈希表9.1 靜靜 態(tài)態(tài) 查查 找找 表表數(shù)據(jù)對象數(shù)據(jù)對象D:數(shù)據(jù)關(guān)系數(shù)據(jù)關(guān)系R:D是具有相同特性的數(shù)據(jù)元素的集合。每個數(shù)每個數(shù)據(jù)元素含有類型相同的據(jù)元素含有類型相同的關(guān)鍵字關(guān)鍵字,可唯一標識數(shù)據(jù)元素。 數(shù)據(jù)元素同屬一個集合。ADT StaticSearchTable
4、 Create(&ST, n);Destroy(&ST);Search(ST, key);Traverse(ST, Visit();基本操作基本操作 P: ADT StaticSearchTable構(gòu)造一個含n個數(shù)據(jù)元素的靜態(tài)查找表ST。 Create(&ST, n);操作結(jié)果:銷毀表ST。Destroy(&ST);初始條件:操作結(jié)果:靜態(tài)查找表ST存在;若 ST 中存在其關(guān)鍵字等于 key 的數(shù)據(jù)元素,則函數(shù)值為該元素的值或在表中的位置,否則為“空”。 Search(ST, key);初始條件:操作結(jié)果:靜態(tài)查找表ST存在,key 為和查找表中元素的關(guān)鍵字類型相同的給定值;按某種次序?qū)T的
5、每個元素調(diào)用函數(shù)Visit()一次且僅一次,一旦Visit()失敗,則操作失敗。Traverse(ST, Visit();初始條件:操作結(jié)果:靜態(tài)查找表ST存在,Visit是對元素操作的應(yīng)用函數(shù);typedef struct / 數(shù)據(jù)元素存儲空間基址,建表時 / 按實際長度分配,0號單元留空 int length; / 表的長度 SSTable;假設(shè)靜態(tài)查找表靜態(tài)查找表的順序存儲結(jié)構(gòu)順序存儲結(jié)構(gòu)為ElemType *elem;數(shù)據(jù)元素類型的定義為數(shù)據(jù)元素類型的定義為:typedef struct keyType key; / 關(guān)鍵字域 / 其它屬性域 ElemType ; , TElemTyp
6、e ;一、順序查找表一、順序查找表二、有序查找表二、有序查找表四、索引順序表四、索引順序表 以順序表或線性鏈表表示靜態(tài)查找表一、順序查找表順序查找表21 37 88 19 92 05 64 56 80 75 13 0 1 2 3 4 5 6 7 8 9 10 11 ST.LengthST.elem回顧順序表的查找過程:回顧順序表的查找過程:假設(shè)給定值 e=64,要求 ST.elemk = e, 問: k = ?kkint location( SqList L, ElemType& e, Status (*compare)(ElemType, ElemType) k = 1; p = L.ele
7、m; while ( k=L.length & !(*compare)(*p+,e) k+; if ( k= L.length) return k; else return 0; /location21 37 88 19 92 05 64 56 80 75 13 0 1 2 3 4 5 6 7 8 9 10 11 ST.LengthST.elemi21 37 88 19 92 05 64 56 80 75 13 0 1 2 3 4 5 6 7 8 9 10 11 ST.LengthST.elemi60ikey=64key=60i64int Search_Seq(SSTable ST, KeyT
8、ype key) / 在順序表ST中順序查找其關(guān)鍵字等于 / key的數(shù)據(jù)元素。若找到,則函數(shù)值為 / 該元素在表中的位置,否則為0。 ST.elem0.key = key; / “哨兵” for (i=ST.length; ST.elemi.key!=key; -i); / 從后往前找 return i; / 找不到時,i為0 / Search_Seq 定義:定義: 查找算法的平均查找長度平均查找長度 (Average Search Length) 為確定記錄在查找表中的位置,需和給定值 進行比較的關(guān)鍵字個數(shù)的期望值 其中: n 為表長,Pi 為查找表中第i個記錄的概率, 且 , Ci為找到
9、該記錄時,曾和給定值比較過的關(guān)鍵字的個數(shù)。分析順序查找的時間性能niiiCPASL111niiP在等概率查找的情況下, 順序表查找的平均查找長度為:對順序表順序表而言,Ci = n-i+1nPi121111n)i(nnASLnissASL = nP1 +(n-1)P2 + +2Pn-1+Pn 若查找概率無法事先測定,則查找過程采取的改進辦法是,在每次查找之后,將剛剛查找到的記錄直接移至表尾的位置上。在不等概率查找的情況下,ASLss 在 PnPn-1P2P1時取極小值 上述順序查找表的查找算法簡單, 但平均查找長度較大,特別不適用于表長較大的查找表。二、有序查找表二、有序查找表 若以有序表有序
10、表表示靜態(tài)查找表,則查找過程可以基于“折半折半”進行。05 13 19 21 37 56 64 75 80 88 92 0 1 2 3 4 5 6 7 8 9 10 11 ST.elemST.length例如例如: key=64 的查找過程如下:lowhighmidlow mid high midlow 指示查找區(qū)間的下界high 指示查找區(qū)間的上界mid = (low+high)/2int Search_Bin ( SSTable ST, KeyType key ) low = 1; high = ST.length; / 置區(qū)間初值 while (low 50時,可得近似結(jié)果 一般情況下,
11、表長為 n 的折半查找的判定樹的深度和含有 n 個結(jié)點的完全二叉樹的深度相同。1) 1(log12112111nnnjnCnASLhjjniibs1) 1(log2nASLbs四、索引順序表四、索引順序表對比對比順序表順序表和和有序表有序表的查找性能之差的查找性能之差別:別: 順序表順序表 有序表有序表表的特性表的特性 無無序表序表 有有序表序表存儲結(jié)構(gòu)存儲結(jié)構(gòu) 順序順序結(jié)構(gòu)或結(jié)構(gòu)或 順序順序結(jié)構(gòu)結(jié)構(gòu) 鏈表鏈表結(jié)構(gòu)結(jié)構(gòu)插刪操作插刪操作 易易于進行于進行 需需移動移動元素元素ASL值值 大大 小小索引順序表索引順序表= =索引索引+ +順序表順序表一般情況下,一般情況下,索引索引是一個有序表是一
12、個有序表索引順序表的查找過程:索引順序表的查找過程:1)由索引確定記錄所在區(qū)間;2)在順序表的某個區(qū)間內(nèi)進行查找。注意:索引可以根據(jù)查找表的特點來構(gòu)造。所以, 索引順序查找索引順序查找的過程也是一個“縮小區(qū)間縮小區(qū)間”的查找過程。索引順序查找的平均查找長度索引順序查找的平均查找長度 = 查找查找“索引索引”的平均查找長度的平均查找長度 + 查找查找“順序表順序表”的平均查找長度的平均查找長度 一、一、哈希表是什么?哈希表是什么?二、哈希函數(shù)的構(gòu)造方法哈希函數(shù)的構(gòu)造方法 三、處理沖突的方法處理沖突的方法 四、哈希表的查找哈希表的查找 五、哈希表的刪除操作哈希表的刪除操作 六、對靜態(tài)查找表,對靜態(tài)
13、查找表,9.3 哈哈 希希 表表 以上兩節(jié)討論的表示查找表的各種結(jié)構(gòu)結(jié)構(gòu)的共同特點特點:記錄在表中的位置位置和它的關(guān)關(guān)鍵字鍵字之間不存在不存在一個確定的關(guān)系,一、哈希表是什么?哈希表是什么? 查找的過程查找的過程為給定值給定值依次和關(guān)鍵字集合中各個關(guān)鍵字關(guān)鍵字進行比較比較, 查找的效率查找的效率取決于和給定值進行比較進行比較的關(guān)鍵字個數(shù)個數(shù)。 用這類方法表示的查找表,其平均查找長度都不為零。 不同的表示方法,其差別僅在于:差別僅在于:關(guān)鍵字和給定值進行比較的順序不同。 只有一個辦法:預先知道所查關(guān)鍵字在表中的位置, 對于頻繁使用的查找表,希望 ASL = 0。 即,要求:記錄在表中位置和其關(guān)鍵
14、字之間存在一種確定的關(guān)系。若以下標為以下標為000 999 的順序表的順序表表示之。例如:為每年招收的 1000 名新生建立一張查找表,其關(guān)鍵字為學號,其值的范圍為 xx000 xx999 (前兩位為年份)。則查找過程可以簡單進行:取給定值(學號)的后三位,不需要經(jīng)過比較不需要經(jīng)過比較便可直接從順序表中找到待查關(guān)鍵字。但是,對于動態(tài)查找表動態(tài)查找表而言,因此在一般情況下,需在關(guān)鍵字與記錄在表中的存儲位置之間建立一個函數(shù)關(guān)系,以 f(key) 作為關(guān)鍵字為 key 的記錄在表中的位置,通常稱這個函數(shù) f(key) 為哈希函數(shù)。1) 表長不確定;2) 在設(shè)計查找表時,只知道關(guān)鍵字所 屬范圍,而不知
15、道確切的關(guān)鍵字。簡單地說,哈希表是基于哈希函數(shù)建立的一種查找表。Zhao, Qian, Sun, Li, Wu, Chen, Han, Ye, Dei 例如:對于如下 9 個關(guān)鍵字設(shè)設(shè) 哈希函數(shù)哈希函數(shù) f(key) = (Ord(第一個字母第一個字母) -Ord(A)+1)/2 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3ChenZhaoQianSunLiWuHanYeDei問題問題: 若添加關(guān)鍵字 Zhou , 怎么辦?怎么辦?能否找到能否找到另一個哈希函數(shù)?1) 哈希函數(shù)是一個映象映象,即: 將關(guān)鍵字的集合映射到某個地址集合上,將關(guān)鍵字的集合映射到某個地址集合上
16、, 它的設(shè)置很靈活靈活,只要這個地址集地址集合的 大小不超出允許范圍不超出允許范圍即可;從這個例子可見:從這個例子可見:2) 由于哈希函數(shù)是一個壓縮映象壓縮映象,因此,在一般情況下,很容易產(chǎn)生“沖突沖突”現(xiàn)象,即: key1 key2,而 f(key1) = f(key2)。3) 很難很難找到一個不產(chǎn)生沖突的哈希函數(shù)。一般情況下,只能選擇恰當?shù)墓:瘮?shù),使沖突盡可能少地產(chǎn)生。 因此,在構(gòu)造這種特殊的“查找表” 時,除了需要選擇一個“好”(盡可能少產(chǎn)生沖突)的哈希函數(shù)之外;還需要找到一種“處理沖突” 的方法。哈希表的定義: 根據(jù)設(shè)定的哈希函數(shù)哈希函數(shù) H(key) 和所選中的處理沖突的方法處理沖
17、突的方法,將一組關(guān)鍵字映象映象到到一個有限的、地址連續(xù)的地址集 (區(qū)間) 上,并以關(guān)鍵字在地址集中的“象”作為相應(yīng)記錄在表中的存儲位置存儲位置,如此構(gòu)造所得的查找表稱之為“哈希表哈希表”。二、構(gòu)造哈希函數(shù)的方法構(gòu)造哈希函數(shù)的方法 對數(shù)字數(shù)字的關(guān)鍵字可有下列構(gòu)造方法: 若是非數(shù)字關(guān)鍵字非數(shù)字關(guān)鍵字,則需先需先對其進行進行數(shù)字化處理數(shù)字化處理。1. 直接定址法直接定址法3. 平方取中法平方取中法5. 除留余數(shù)法除留余數(shù)法4. 折疊法折疊法6. 隨機數(shù)法隨機數(shù)法2. 數(shù)字分析法數(shù)字分析法哈希函數(shù)為關(guān)鍵字的線性函數(shù) H(key) = key 或者 H(key) = a key + b1. 直接定址法直
18、接定址法此法僅適合于:此法僅適合于:地址集合的大小地址集合的大小 = = 關(guān)鍵字集合的大小關(guān)鍵字集合的大小此方法僅適合于:此方法僅適合于: 能預先估計出預先估計出全體關(guān)鍵字的每一位上每一位上各種數(shù)字出現(xiàn)的頻度數(shù)字出現(xiàn)的頻度。2. 數(shù)字分析法數(shù)字分析法 假設(shè)關(guān)鍵字集合中的每個關(guān)鍵字都是由 s 位數(shù)字組成 (u1, u2, , us),分析關(guān)鍵字集中的全體, 并從中提取分布均勻的若干位或它們的組合作為地址。例:例: 設(shè)有設(shè)有80個記錄,關(guān)鍵字為個記錄,關(guān)鍵字為8位十進制數(shù),哈希地址位十進制數(shù),哈希地址為為2位十進制數(shù)位十進制數(shù)。8 1 3 4 6 5 3 28 1 3 7 2 2 4 28 1 3
19、 8 7 4 2 28 1 3 0 1 3 6 78 1 3 2 2 8 1 7 8 1 3 3 8 9 6 78 1 3 6 8 5 3 78 1 4 1 9 3 5 5 分析:分析: 只取只取8 只取只取1 只取只取3、4 只取只取2、7、5 數(shù)字分布近乎隨機數(shù)字分布近乎隨機所以:取所以:取任意兩位或兩位任意兩位或兩位 與另兩位的疊加作哈希地址與另兩位的疊加作哈希地址 以關(guān)鍵字的平方值的中間幾位作為存儲地址。求“關(guān)鍵字的平方值” 的目的是“擴大差別” ,同時平方值的中間各位又能受到整個關(guān)鍵字中各位的影響。3. 平方取中法平方取中法 此方法適合于此方法適合于: 關(guān)鍵字中的每一位都有某些數(shù)字重
20、復出現(xiàn)頻度很高的現(xiàn)象。 將關(guān)鍵字分割成若干部分,然后取它們的疊加和為哈希地址。有兩種疊加處理的方法:移位疊加移位疊加和間界疊加間界疊加。4. 折疊法折疊法 此方法適合于此方法適合于: 關(guān)鍵字的數(shù)字位數(shù)特別多。5. 除留余數(shù)法除留余數(shù)法 設(shè)定哈希函數(shù)為設(shè)定哈希函數(shù)為: H(key) = key MOD p 其中其中, pm ( (表長表長) ) 并且并且 p 應(yīng)為不大于應(yīng)為不大于 m 的素數(shù)的素數(shù) 或是或是 不含不含 20 以下的質(zhì)因子以下的質(zhì)因子 給定一組關(guān)鍵字為:12, 39, 18, 24, 33, 21,若取 p=9, 則他們對應(yīng)的哈希函數(shù)值將為: 3, 3, 0, 6, 6, 3例如:
21、例如:為什么要對 p 加限制? 可見,若 p 中含質(zhì)因子 3, 則所有含質(zhì)則所有含質(zhì)因子因子 3 的關(guān)鍵字均映射到的關(guān)鍵字均映射到“3 的倍數(shù)的倍數(shù)”的的地址上地址上,從而增加了“沖突”的可能。6.隨機數(shù)法隨機數(shù)法設(shè)定哈希函數(shù)為設(shè)定哈希函數(shù)為: H(key) = Random(key)其中,其中,Random 為偽隨機函數(shù)為偽隨機函數(shù) 通常,此方法用于對長度不等的關(guān)鍵字構(gòu)造哈希函數(shù)。 實際造表時,采用何種采用何種構(gòu)造哈希函數(shù)的方法方法取決于建表的關(guān)鍵字集合的情況(包括關(guān)鍵字的范圍和形態(tài)),總的原則是使產(chǎn)生沖突的可能性降到的原則是使產(chǎn)生沖突的可能性降到盡可能地小盡可能地小。三、處理沖突的方法處理
22、沖突的方法 “處理沖突處理沖突” 的實際含義是:為產(chǎn)生沖突的地址尋找下一個尋找下一個哈希地址。1. 開放定址法開放定址法2. 鏈地址法鏈地址法 為產(chǎn)生沖突的地址 H(key) 求得一個地址序列地址序列: H0, H1, H2, , , Hs 1 sm-1其中:H0 = H(key) Hi = ( H(key) + di ) MOD m i=1, 2, , s1. 開放定址法開放定址法對增量 di 有三種取法: 1) 線性探測再散列線性探測再散列 di = c i 最簡單的情況 c=1 2) 平方探測再散列平方探測再散列 di = 12, -12, 22, -22, , , 3) 隨機探測再散列
23、隨機探測再散列 di 是一組偽隨機數(shù)列偽隨機數(shù)列 或者 di=iH2(key) (又稱雙散列函數(shù)探測又稱雙散列函數(shù)探測)即:產(chǎn)生的 Hi 均不相同,且所產(chǎn)生的 s(m-1)個個 Hi 值能覆蓋覆蓋哈希表中所有 地址。則要求: 注意:注意:增量增量 di 應(yīng)具有應(yīng)具有“完備性完備性” 隨機探測時的 m 和 di 沒有公因子。 平方探測時的表長 m 必為形如 4j+3 的素數(shù)(如: 7, 11, 19, 23, 等);例如例如: 關(guān)鍵字集合 19, 01, 23, 14, 55, 68, 11, 82, 36 設(shè)定設(shè)定哈希函數(shù) H(key) = key MOD 11 ( 表長=11 ) 0 1 2
24、 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10190123 145568190123 1468若采用線性探測再散列線性探測再散列處理沖突若采用二次探測再散列二次探測再散列處理沖突11 8236551182361 1 2 1 3 6 2 5 1 H2(key) 是另設(shè)定的一個哈希函數(shù),它的函數(shù)值應(yīng)和 m 互為素數(shù)。若 m 為素數(shù),則 H2(key) 可以是 1 至 m-1 之間的任意數(shù)任意數(shù); 若 m 為 2 的冪次,則 H2(key) 應(yīng)是 1 至 m-1 之間的任意奇數(shù)任意奇數(shù)。例如,當 m=11時, 可設(shè) H2(key)=(3 key) MOD 10+1
25、0 1 2 3 4 5 6 7 8 9 101901231455681182362 1 1 1 2 1 2 1 3將所有哈希地址相同的記錄都鏈接在同一鏈表中。 2. 鏈地址法鏈地址法0123456140136198223116855 ASL=(61+22+3)/9=13/9例如:同前例的關(guān)鍵字,哈希函數(shù)為 H(key)=key MOD 7 查找過程和造表過程一致。假設(shè)采用開放定址處理沖突,則查找過程查找過程為: 四、哈希表的查找哈希表的查找 對于給定值 K, 計算哈希地址 i = H(K)若若 ri = NULL 則查找不成功若若 ri.key = K 則查找成功否則否則 “求下一地址 Hi” ,直至 rHi = NULL (查找不成功) 或 rHi.key = K (查找成功) 為止。int hashsize = 997, . ; typedef struct ElemType *elem; int count; / 當前數(shù)據(jù)元素個數(shù) int sizeindex; / hashsizesizeindex為當前容量 HashTable;#define SUCCESS 1#define UNSUCCESS 0#define DUP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濰坊學院《食品酶學》2023-2024學年第二學期期末試卷
- 模電 7-信號的運算和處理學習資料
- 江蘇省蘇州市常熟一中達標名校2025屆第二學期期末統(tǒng)一考試(數(shù)學試題理)試題含解析
- 六安職業(yè)技術(shù)學院《西方文化與近代中國》2023-2024學年第一學期期末試卷
- 南通職業(yè)大學《行為矯正》2023-2024學年第一學期期末試卷
- 遼寧傳媒學院《分析代數(shù)方法選講》2023-2024學年第一學期期末試卷
- 二零二五廣告合同范例大全
- 展會知識產(chǎn)權(quán)保護合同范例
- 委托代理采購協(xié)議書二零二五年
- 房地產(chǎn)項目顧問合同書二零二五年
- 二年級下冊科學不斷發(fā)展的人工產(chǎn)品鄂教版課件
- 小學部編版六年級下冊道德與法治《4、地球-我們的家園》第一課時說課稿
- DB11T 1340-2022 居住建筑節(jié)能工程施工質(zhì)量驗收規(guī)程
- 保險市場調(diào)查與分析實訓三任務(wù)一2.3.1任務(wù)一運用Excel整理市場調(diào)查問卷數(shù)據(jù)
- 中央空調(diào)(多聯(lián)機)施工方案
- PKPM磚混結(jié)構(gòu)抗震及其他計算全攻略
- “育鯤”輪轉(zhuǎn)葉式舵機工作原理和電氣控制以及故障分析
- 流動資金自動測算表(內(nèi)自帶計算公式)
- 最新.爾雅批判與創(chuàng)意思考--馮林答案
- 宿州光伏玻璃項目可行性研究報告(范文模板)
- 10KV變電站施工方案
評論
0/150
提交評論