一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法
【專(zhuān)利摘要】本發(fā)明提供一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法,其特點(diǎn)是鏈表以桶式結(jié)構(gòu)為單位組織節(jié)點(diǎn),節(jié)點(diǎn)之間使用數(shù)字索引指向上一個(gè)和下一個(gè)節(jié)點(diǎn)位置,鏈表可由多個(gè)桶式結(jié)構(gòu)串聯(lián)組成。在添加節(jié)點(diǎn)時(shí),查找桶式結(jié)構(gòu)中空閑位置,若桶滿(mǎn)則創(chuàng)建一個(gè)新桶并存入數(shù)據(jù)。刪除節(jié)點(diǎn)時(shí)將對(duì)應(yīng)桶位置設(shè)置為空閑即可。相比較傳統(tǒng)的鏈表結(jié)構(gòu),桶式鏈表以桶式為單位進(jìn)行管理,不再以指針的方式進(jìn)行雙向連接,節(jié)點(diǎn)的添加和刪除操作都非??旖?,在遍歷鏈表節(jié)點(diǎn)時(shí),由于節(jié)點(diǎn)之間是內(nèi)存連續(xù)的,不僅提高了內(nèi)存緩存命中率,還顯著加快了軟件系統(tǒng)的運(yùn)行效率。
【專(zhuān)利說(shuō)明】一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法,具體涉及到鏈表結(jié)構(gòu)的創(chuàng)建,節(jié)點(diǎn)的添加和刪除方法。
【背景技術(shù)】
[0002]鏈表是一種通過(guò)指針連接各個(gè)節(jié)點(diǎn)元素的數(shù)據(jù)結(jié)構(gòu),鏈表進(jìn)行添加節(jié)點(diǎn)和刪除節(jié)點(diǎn)時(shí),只需要修改前一個(gè)和后一個(gè)節(jié)點(diǎn)的指針即可完成添加和刪除操作,相比較數(shù)組結(jié)構(gòu)省去了大量的元素移動(dòng)操作。
[0003]由于鏈表的節(jié)點(diǎn)是單個(gè)單位組織的,當(dāng)鏈表進(jìn)行大量的節(jié)點(diǎn)操作時(shí),頻繁的節(jié)點(diǎn)添加和刪除操作導(dǎo)致了性能的急劇下降,嚴(yán)重影響程序的運(yùn)行效率。
【發(fā)明內(nèi)容】
[0004]本發(fā)明為了解決現(xiàn)有鏈表在添加節(jié)點(diǎn)和刪除節(jié)點(diǎn)時(shí)存在的效率低下問(wèn)題,提供了一種新型的桶式鏈表結(jié)構(gòu)實(shí)現(xiàn)方法,通過(guò)引入桶式結(jié)構(gòu),將桶內(nèi)節(jié)點(diǎn)以數(shù)字索引的方式相互連接,加速了節(jié)點(diǎn)的添加、刪除和訪問(wèn)的速度,提升了程序的運(yùn)行效率。特別是在高性能大數(shù)據(jù)運(yùn)算領(lǐng)域,通過(guò)本發(fā)明提供的方法效率提升尤其明顯。
[0005]本發(fā)明的具體實(shí)現(xiàn)方案如下:
一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)及方法,其特征是通過(guò)構(gòu)造桶式結(jié)構(gòu)組織節(jié)點(diǎn),桶內(nèi)各個(gè)節(jié)點(diǎn)使用前向索引和后向索引與其他節(jié)點(diǎn)相互連接,所述的桶式結(jié)構(gòu)是由一個(gè)固定大小的數(shù)組組成,數(shù)組中的元素由節(jié)點(diǎn)數(shù)據(jù)、前向索引和后向索引組成,前向索引指向上一個(gè)節(jié)點(diǎn)的位置,后向索引指向下一個(gè)節(jié)點(diǎn)的位置。
[0006]所述前向索引是一個(gè)位置索引,指向了當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)在桶內(nèi)的位置,所述后向索引與前身索引相反,指向了當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)在桶內(nèi)的位置。
[0007]在添加節(jié)點(diǎn)時(shí),查找現(xiàn)有桶式結(jié)構(gòu)是否有空閑的位置,若無(wú)空閑位置則創(chuàng)建一個(gè)新桶,在空閑位置存入數(shù)據(jù),并設(shè)置節(jié)點(diǎn)的前向索引和后向索引,以及前后節(jié)點(diǎn)的索引。
[0008]在刪除節(jié)點(diǎn)時(shí),首先調(diào)整當(dāng)前節(jié)點(diǎn)的前后節(jié)點(diǎn)的位置索引,再將此節(jié)點(diǎn)位置設(shè)置為空閑狀態(tài),并檢查當(dāng)前桶式結(jié)構(gòu)是為全部為空閑,若是則刪除此桶式結(jié)構(gòu)。
[0009]本發(fā)明的有益效果是:通過(guò)引入桶式結(jié)構(gòu),高效的解決了鏈表在添加和刪除節(jié)點(diǎn)時(shí)的效率低下問(wèn)題,得益于桶式結(jié)構(gòu)的組織方式,在遍歷鏈表時(shí),緩存命中率得到提高,從而顯著加快了鏈表的運(yùn)行效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0010]圖1為本發(fā)明桶式鏈表結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0011]本發(fā)明的特征和優(yōu)點(diǎn)將通過(guò)以下實(shí)例示意圖進(jìn)行闡述,示意圖中的展示實(shí)例僅是本發(fā)明技術(shù)方案的典型范例,凡采取等同替換或等效變換而形成的技術(shù)方案,均涉及本發(fā)明要求的保護(hù)范圍之內(nèi)。
[0012]圖1為本發(fā)明中桶式鏈表結(jié)構(gòu)示意圖,在本示意圖中鏈表由三個(gè)桶式結(jié)構(gòu)串聯(lián)組成,各個(gè)桶式結(jié)構(gòu)分別有5個(gè)節(jié)點(diǎn)空間,各個(gè)節(jié)點(diǎn)由前向索引、節(jié)點(diǎn)數(shù)據(jù)和后向索引組成。桶I中第3個(gè)位置(從O開(kāi)始)由于是空閑,節(jié)點(diǎn)3的后向索引指向了第4個(gè)位置。第4個(gè)節(jié)點(diǎn)的后向索弓丨,指向了桶2的第O個(gè)節(jié)點(diǎn),此節(jié)點(diǎn)在鏈表中總的位置是5。從桶2中各節(jié)點(diǎn)的前向索引和后向索引可知,第2、3、4節(jié)點(diǎn)的順序位置相反。
[0013]鏈表中的頭節(jié)點(diǎn)和尾節(jié)點(diǎn)標(biāo)示了鏈表的開(kāi)始和結(jié)束的節(jié)點(diǎn)位置。
[0014]空閑位置的前向索引和后向索引都標(biāo)記為-1。
[0015]首先,第一次添加節(jié)點(diǎn)時(shí),創(chuàng)建一個(gè)新的桶式結(jié)構(gòu),桶內(nèi)各個(gè)節(jié)點(diǎn)位置都標(biāo)記為空閑,將數(shù)據(jù)存入第一個(gè)空閑位置,并設(shè)置前向索引和后向索引為-1,將鏈表的頭節(jié)點(diǎn)和尾節(jié)點(diǎn)指向此位置。當(dāng)下次添加節(jié)點(diǎn)時(shí),查找現(xiàn)有的桶式結(jié)構(gòu)得到空閑位置,若無(wú)空閑位置,則創(chuàng)建新的桶式結(jié)構(gòu)。
[0016]其次,當(dāng)刪除一個(gè)節(jié)點(diǎn)時(shí),得到桶式結(jié)構(gòu)的位置,將數(shù)據(jù)清空,并調(diào)整前后節(jié)點(diǎn)的索引。然后判斷當(dāng)前桶是否全部位置為空閑,若是則刪除此桶式結(jié)構(gòu)。
[0017]最后,在遍歷鏈表時(shí),從頭節(jié)點(diǎn)或者尾節(jié)點(diǎn)開(kāi)始,通過(guò)前向索引或者后向索引調(diào)整節(jié)點(diǎn)位置,進(jìn)行遍歷。
[0018]以上所述僅為本發(fā)明的具體實(shí)例實(shí)施方式,只要以基本相同手段實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征是通過(guò)構(gòu)造桶式結(jié)構(gòu)組織節(jié)點(diǎn),桶內(nèi)各個(gè)節(jié)點(diǎn)使用前向索引和后向索引與其他節(jié)點(diǎn)相互連接,所述的桶式結(jié)構(gòu)是由一個(gè)固定大小的數(shù)組組成,數(shù)組中的元素由節(jié)點(diǎn)數(shù)據(jù)、前向索引和后向索引組成,前向索引指向上一個(gè)節(jié)點(diǎn)的位置,后向索引指向下一個(gè)節(jié)點(diǎn)的位置。
2.根據(jù)權(quán)利要求1所述的桶式鏈表結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征是所述前向索引是一個(gè)位置索引,指向了當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)在桶內(nèi)的位置,所述后向索引與前身索引相反,指向了當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)在桶內(nèi)的位置。
【文檔編號(hào)】G06F17/30GK104199966SQ201410484379
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年9月22日 優(yōu)先權(quán)日:2014年9月22日
【發(fā)明者】余欣 申請(qǐng)人:杭州電魂網(wǎng)絡(luò)科技股份有限公司