欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

鏈表的創(chuàng)建方法及系統(tǒng)、數(shù)據的查找方法及系統(tǒng)的制作方法

文檔序號:6585275閱讀:255來源:國知局
專利名稱:鏈表的創(chuàng)建方法及系統(tǒng)、數(shù)據的查找方法及系統(tǒng)的制作方法
技術領域
本發(fā)明涉及計算機的數(shù)據結構領域,尤其涉及一種鏈表的創(chuàng)建方法及系統(tǒng),和一 種數(shù)據的查找方法及系統(tǒng)。
背景技術
鏈表是一種常用的組織有序數(shù)據的數(shù)據結構,它通過指針將一系列數(shù)據節(jié)點連接 成一條數(shù)據鏈,是線性表的一種重要實現(xiàn)方式。Linux內核中使用了大量的鏈表結構來組織 數(shù)據,包括設備列表以及各種功能模塊中的數(shù)據組織。從表面上來看,鏈表具有更好的動態(tài)性,建立鏈表時無需預先知道數(shù)據總量,可以 隨機分配空間,可以高效地在鏈表中的任意位置實時插入或刪除數(shù)據。鏈表的順序性導致 遍歷成為鏈表最常用的操作一遍歷操作頻繁訪問的數(shù)據只有兩種節(jié)點標識和節(jié)點指針 (單向鏈表只有next指針,雙向鏈表還有pre指針)。盡管節(jié)點標識或者節(jié)點指針占用很少的內存,但是鏈表中不同節(jié)點的標識或者指 針很少位于同一個物理頁面的同一行中;其中的同一行指物理頁面中對齊的一段數(shù)據,長 度等于處理器內部緩存行的長度。當處理器訪問的某個數(shù)據不在緩存中時,會將該數(shù)據所 在的行載入緩存中,從而避免每次都需要從內存中獲取數(shù)據。在實現(xiàn)本發(fā)明過程中,發(fā)明人仔細分析鏈表的特征,發(fā)現(xiàn)現(xiàn)有技術至少存在如下 問題鏈表訪問的順序性和鏈表結構的離散性,使得鏈表很難高效地運行在處理器上。 由于鏈表不同節(jié)點的標識或者指針很少位于同一個物理頁面的同一行中,每遍歷一個節(jié)點 都可能會觸發(fā)某個緩存行的數(shù)據更新,這樣一來,不但遍歷操作沒法有效利用緩存,反而很 可能會將其他程序在數(shù)據緩存中的數(shù)據剔出去,從而影響了整個系統(tǒng)的性能。

發(fā)明內容
本發(fā)明所要解決的技術問題,在于需要提供一種鏈表的創(chuàng)建方法及系統(tǒng),以提高 數(shù)據的訪問效率。為了解決上述技術問題,本發(fā)明提供了一種鏈表的創(chuàng)建方法,包括從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點,每個節(jié)點至少 包括第一數(shù)據;從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據;將所述第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表。優(yōu)選地,所述第一數(shù)據包括所述節(jié)點的標識信息和指針。優(yōu)選地,所述第一存儲區(qū)域具有第一訪問速度,所述第二存儲區(qū)域具有第二訪問 速度;其中,所述第二訪問速度大于所述第一訪問速度。優(yōu)選地,所述第二存儲區(qū)域為連續(xù)的存儲空間。
優(yōu)選地,該方法進一步包括所述第二存儲區(qū)域不足以繼續(xù)存儲所述第二鏈表時,分配第三存儲區(qū)域;將所述第二存儲區(qū)域中的所述第二鏈表拷貝至所述第三存儲區(qū)域;其中,所述第三存儲區(qū)域的空間大于所述第二存儲區(qū)域的空間。為了解決上述技術問題,本發(fā)明還提供了一種鏈表的創(chuàng)建系統(tǒng),包括第一獲取模塊,用于從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個 節(jié)點,每個節(jié)點至少包括第一數(shù)據;第二獲取模塊,用于從所述第一鏈表中獲得每個節(jié)點的所述第一數(shù)據;預設模塊,用于預設第二存儲區(qū)域;存儲模塊,用于將所述第一數(shù)據存儲于所述第二存儲區(qū)域中,形成第二鏈表。優(yōu)選地,所述預設模塊用于將連續(xù)的存儲空間預設為所述第二存儲區(qū)域。優(yōu)選地,所述第一存儲區(qū)域具有第一訪問速度,所述第二存儲區(qū)域具有第二訪問 速度;其中,所述第二訪問速度大于所述第一訪問速度。優(yōu)選地,該系統(tǒng)進一步包括分配模塊,用于當所述第二存儲區(qū)域不足以繼續(xù)存儲所述第二鏈表時,分配第三 存儲區(qū)域;拷貝模塊,用于將所述第二存儲區(qū)域中的所述第二鏈表拷貝至所述第三存儲區(qū) 域;其中,所述第三存儲區(qū)域的空間大于所述第二存儲區(qū)域的空間。本發(fā)明所要解決的另一技術問題是,提供一種數(shù)據的查找方法及系統(tǒng),用于查找 數(shù)據。為了解決上述技術問題,本發(fā)明提供了一種數(shù)據的查找方法,包括從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點,每個所述節(jié)點 至少包括第一數(shù)據和第二數(shù)據;從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據;將每個所述節(jié)點的所述第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表;接收查找數(shù)據;按照預設的比較策略對所述查找數(shù)據與所述第二鏈表中每個所述節(jié)點的所述第 一數(shù)據進行比較;當存在與所述查找數(shù)據匹配的特定第一數(shù)據時,獲得所述特定第一數(shù)據所屬節(jié)點 的第二數(shù)據。為了解決上述技術問題,本發(fā)明還提供了一種數(shù)據的查找系統(tǒng),包括第一獲取模塊,用于從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個 節(jié)點,每個所述節(jié)點至少包括第一數(shù)據和第二數(shù)據;第二獲取模塊,用于從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據;第一預設模塊,用于預設第二存儲區(qū)域;存儲模塊,用于將每個所述節(jié)點的所述第一數(shù)據存儲于所述第二存儲區(qū)域中,形 成第二鏈表;
接收模塊,用于接收查找數(shù)據;第二預設模塊,用于預設比較策略;比較模塊,用于按照所述比較策略對所述查找數(shù)據與所述第二鏈表中每個所述節(jié) 點的所述第一數(shù)據進行比較;第三獲取模塊,用于當存在與所述查找數(shù)據匹配的特定第一數(shù)據時,獲得所述特 定第一數(shù)據所屬節(jié)點的第二數(shù)據。與現(xiàn)有技術相比,本發(fā)明針對鏈表訪問的順序性和鏈表結構的離散性,優(yōu)選使用 連續(xù)的存儲區(qū)域來存放鏈表節(jié)點標識和節(jié)點指針,從而降低遍歷操作所觸發(fā)的緩存更新次 數(shù),提高了被訪問的數(shù)據的訪問速度,解決了鏈表操作頻繁觸發(fā)緩存更新的問題。本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權利 要求書以及附圖中所特別指出的結構來實現(xiàn)和獲得。


附圖用來提供對本發(fā)明的進一步理解,并且構成說明書的一部分,與本發(fā)明的實 施例一起用于解釋本發(fā)明,并不構成對本發(fā)明的限制。在附圖中圖1為本發(fā)明創(chuàng)建方法實施例的流程示意圖;圖2為本發(fā)明創(chuàng)建方法應用實例的流程示意圖;圖3為采用本發(fā)明創(chuàng)建方法存儲節(jié)點標識和指針的鏈表結構示意圖;圖如為現(xiàn)有技術中的鏈表在遍歷操作時緩存節(jié)點指針的示意圖;圖4b本發(fā)明技術方案中的鏈表在遍歷操作時緩存節(jié)點指針的示意圖;圖5為本發(fā)明數(shù)據查找方法實施例的流程示意圖;圖6為本發(fā)明鏈表創(chuàng)建系統(tǒng)實施例的組成示意圖;圖7為本發(fā)明數(shù)據查找系統(tǒng)實施例的組成示意圖。
具體實施例方式以下將結合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用 技術手段來解決技術問題,并達成技術效果的實現(xiàn)過程能充分理解并據以實施。需要說明的是,如果不沖突,本發(fā)明實施例以及實施例中的各個特征可以相互結 合,均在本發(fā)明的保護范圍之內。另外,在附圖的流程圖示出的步驟可以在諸如一組計算機 可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況 下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。本發(fā)明的核心思想是將數(shù)據從第一鏈表的節(jié)點中抽取出來存放到一預設的存儲 區(qū)域中,形成第二鏈表。將電子設備會被訪問的部分數(shù)據存儲到該新的鏈表中,至少在電子 設備訪問該部分數(shù)據時,可以明顯提高工作效率。其中,第二鏈表可以替換掉第一鏈表,也可以是重新設置的一鏈表。其中,電子設備會訪問的數(shù)據,包括每個節(jié)點的next指針和標識。其中,為了節(jié)省存儲空間,該存儲區(qū)域優(yōu)選為連續(xù)的存儲區(qū)域。其中,當預設的存儲區(qū)域存滿之后可以擴大存儲區(qū)域,以存儲更多的電子設備會訪問的數(shù)據;該擴大可以是每次擴大到當前存儲區(qū)域的兩倍,形成新的當前存儲區(qū)域,將該 當前存儲區(qū)域中的數(shù)據拷貝到該新的當前存儲區(qū)域,并釋放之前的存儲區(qū)域。傳統(tǒng)的鏈表是以節(jié)點為單位來存放數(shù)據的,節(jié)點內部的數(shù)據成員之間是連續(xù)存放 的,但是節(jié)點與節(jié)點并不是連續(xù)存放的。因為一次載入緩存行(例如1 字節(jié))的數(shù)據是 連續(xù)存放的數(shù)據,本實施例優(yōu)選預設連續(xù)的存儲區(qū)域中,以形成該第二鏈表,這樣可以保證 一次緩存更新能夠載入盡量多的數(shù)據。當然,該預設的存儲空間也可以是不連續(xù)的,只是在 數(shù)據的存儲以及后續(xù)的讀取,對操作效率稍有影響。圖1為本發(fā)明創(chuàng)建方法實施例的流程示意圖。如圖1所示,該創(chuàng)建方法實施例主 要包括如下步驟步驟S110,從第一存儲區(qū)域獲得第一鏈表,該第一鏈表具有至少一個節(jié)點,每個節(jié) 點至少包括第一數(shù)據;步驟S120,從該第一鏈表中獲得每個節(jié)點的該第一數(shù)據;步驟S130,將該第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表;步驟S140,當該第二存儲區(qū)域的存儲空間不足以繼續(xù)存儲從第一存儲區(qū)域中獲得 的第一數(shù)據,則分配第三存儲區(qū)域以存儲該第二鏈表;其中該第三存儲區(qū)域的存儲空間優(yōu) 選地為該第二存儲區(qū)域的兩倍。該第一存儲區(qū)域具有第一訪問速度,該第二存儲區(qū)域具有第二訪問速度,該第二 訪問速度大于該第一訪問速度時,可以進一步提高電子設備讀取數(shù)據的速度,進而提高工 作效率。圖2為本發(fā)明創(chuàng)建方法應用實例的流程示意圖。該創(chuàng)建方法應用實例以ARM平臺 為例,使用連續(xù)的存儲區(qū)域存放節(jié)點的標識和節(jié)點指針,模擬鏈表的行為。如圖2所示,該 應用實例主要包括如下步驟步驟S210,鏈表初始化時,通過Linux內核提供的接口在緊耦合存儲器(TCM)中 分配N個節(jié)點的標識和指針所需要的存儲區(qū)域;本應用實例中TCM是ARM芯片內部的高速 RAM,訪問速度接近于緩存,與現(xiàn)有技術相比中的鏈表相比,顯著提高了存儲于其中的數(shù)據 的訪問速度;步驟S220,隨著用戶不斷地在鏈表中插入新的節(jié)點,鏈表節(jié)點數(shù)目逐漸增加;每 當鏈表節(jié)點數(shù)目超過當前存儲區(qū)域時,則分配兩倍于當前存儲區(qū)域的新存儲區(qū)域;步驟S230,將該當前存儲區(qū)域內的節(jié)點的標識和指針拷貝到新存儲區(qū)域,釋放該 當前存儲區(qū)域,并將該新存儲區(qū)域作為新的當前存儲區(qū)域繼續(xù)接受用戶在鏈表中插入新節(jié) 點的操作。步驟S220中,由于TCM是系統(tǒng)寶貴的存儲資源,因此本發(fā)明技術方案應該有限制 地使用該TCM。比如當前存儲區(qū)域是最初在TCM中分配的用于存儲N個節(jié)點的標識和指針 的存儲區(qū)域,則鏈表節(jié)點數(shù)目已經達到N且將要從N變成N+1時,為了不繼續(xù)占用TCM的寶 貴資源,此時使用系統(tǒng)調用在主存空間中分配2 個節(jié)點的標識和指針所需要的存儲區(qū)域, 將TCM中N個節(jié)點的標識和指針拷貝到新分配的存儲區(qū)域中,并且將該新分配的主存空間 作為當前存儲區(qū)域繼續(xù)接受用戶在鏈表中插入新節(jié)點。以此類推,每當鏈表節(jié)點數(shù)目將要 超過當前存儲區(qū)域所能容納的節(jié)點數(shù)量時,就采用倍乘的辦法將存儲區(qū)域擴大一倍。當然, 也可以在TCM中擴大若干次存儲區(qū)域,如果插入到鏈表中的節(jié)點數(shù)目繼續(xù)增加,則不繼續(xù)在TCM中分配新的存儲區(qū)域了,而是使用系統(tǒng)調用,在系統(tǒng)主存中分配新的存儲區(qū)域,并將 TCM中存儲的節(jié)點拷貝到系統(tǒng)內存該新的存儲區(qū)域中,同時釋放TCM中的存儲區(qū)域。圖3為采用本發(fā)明創(chuàng)建方法存儲節(jié)點標識和指針的鏈表結構示意圖。結合圖1所 示的實施例和圖2所示方法應用實例,圖3以單向鏈表為例,示范如何在連續(xù)的存儲區(qū)域 里模擬鏈表的操作。假設節(jié)點指針的大小為32-bit,節(jié)點標識的大小為32-bit,位置有效 數(shù)組單個元素的大小為8-bit-假設的目的是為了便于理解節(jié)點指針和節(jié)點標識可以用 無符號長整型(imSignedint)32比特來表示,位置有效數(shù)組單個元素的大小可以用字符型 (char)來表示。實際上,用戶使用位(bit)來代替字符型(char)可以節(jié)省空間;用戶也可 以根據具體需求靈活定義節(jié)點標識的長度。基于以上假設,比如可以規(guī)定鏈表節(jié)點數(shù)目的 上限是232-1,鏈表初始化時節(jié)點數(shù)目為32。在連續(xù)的存儲區(qū)域中,節(jié)點標識數(shù)組存儲節(jié)點標識,節(jié)點指針數(shù)組存儲節(jié)點指針, 節(jié)點指針值為232-1時表示到達鏈表尾部;位置有效數(shù)組標識連續(xù)存儲區(qū)域中對應的位置 是否空閑;例如位置有效數(shù)組[1] = 0表示存儲區(qū)域中下標為1的位置空閑。根據以上 定義,圖3中表示鏈表有4個節(jié)點一按照鏈表中的順序這些節(jié)點在連續(xù)存儲區(qū)域的下標 Index 分別為 0,2,4,3。從用戶看來,單個節(jié)點包含的數(shù)據除了節(jié)點指針和節(jié)點標識以外,還有一些用戶 自己定義的數(shù)據,本文稱之為節(jié)點數(shù)據區(qū)域。當構建節(jié)點時,從堆中分配節(jié)點數(shù)據區(qū)域,并 且指向該數(shù)據區(qū)域的指針存入節(jié)點數(shù)據區(qū)域的指針數(shù)組。位置有效數(shù)組和節(jié)點指針數(shù)組是 鏈表類的內部操作來控制的,用戶無法直接修改這些數(shù)據。圖3所示的鏈表結構示意圖中,三個箭頭表示節(jié)點在鏈表的順序。其中的虛線橢 圓框表示的是單個節(jié)點的數(shù)據。對于圖3所示的鏈表,有兩種方式實現(xiàn)遍歷。第一種方式按照鏈表中節(jié)點的順序,根據節(jié)點標識數(shù)組的值和節(jié)點指針數(shù)組的值,完成所述 鏈表的遍歷。具體地,首先查詢下標為0的節(jié)點,如果不匹配,讀取節(jié)點指針數(shù)組
中的數(shù) 據(值為幻;接著查詢下標為2的節(jié)點,如果不匹配,讀取節(jié)點指針數(shù)組[2]中的數(shù)據(值 為4);以此類推直到找到目標節(jié)點,并且返回目標節(jié)點在連續(xù)存儲區(qū)域中的下標。第二種方式按照節(jié)點標識數(shù)組和位置有效數(shù)組下標直接查詢數(shù)組中的節(jié)點。在某些情況下, 這種方式可能比前述第一種方式的查找速度更快。Unsigned Int32 Search_ID(Target_ID){Unsigned Int32 Index = 0 ;While (Index<MaxArrayIndex){If (節(jié)點標識數(shù)組Dndex] = = Target_ID & &位置有效數(shù)組[hdex]1){
Return Index ;}Else{Index++ ;}
}Return 232~1 ;}鏈表的基本操作除了遍歷還包括插入和刪除。本發(fā)明技術方案實現(xiàn)的鏈表在執(zhí)行 刪除操作時,與現(xiàn)有技術沒有實質性的區(qū)別。本發(fā)明技術方案實現(xiàn)的鏈表,在執(zhí)行插入操作 時較現(xiàn)有技術相比,需要額外的搜索操作,即在連續(xù)的存儲區(qū)域中搜索沒有使用的存儲位 置。由于現(xiàn)有技術的插入操作時一般會初始化節(jié)點的數(shù)據區(qū)域,其所花費的時間遠遠高于 在緩存或者TCM中進行的搜索操作,所以本發(fā)明技術方案中額外搜索操作的開銷可以忽略 不計。由以上描述可知,如果鏈表在使用時節(jié)點數(shù)目始終沒有超出鏈表初始化時分配的 節(jié)點數(shù)目,那么由于鏈表的節(jié)點標識和節(jié)點指針都存放在TCM中,遍歷操作的性能將遠遠 高于現(xiàn)有技術中普通的鏈表。本發(fā)明技術方案中,即使鏈表在使用時節(jié)點數(shù)目始終超過了鏈表初始化時分配的 節(jié)點數(shù)目,存放在近似連續(xù)物理空間的節(jié)點指針數(shù)組、節(jié)點標識數(shù)組和位置有效數(shù)組也能 夠充分利用緩存的優(yōu)勢。圖如和圖4b是現(xiàn)有技術實現(xiàn)的鏈表和本發(fā)明技術方案實現(xiàn)的鏈表在遍歷操作時 緩存節(jié)點指針的示意圖。假設緩存行長度為1 字節(jié)且節(jié)點指針為4個字節(jié)。本發(fā)明技術 方案實現(xiàn)的鏈表進行遍歷操作時,當某個節(jié)點指針在緩存中不命中后會載入附近的32個 節(jié)點指針,如圖4b所示;而現(xiàn)有技術實現(xiàn)的鏈表只能夠載入1個節(jié)點指針,如圖如所示。 如果按照遍歷節(jié)點數(shù)目等于N來計算,本發(fā)明技術方案實現(xiàn)的鏈表只需要占用2*Ν/(128/4) 個緩存行;而現(xiàn)有的技術方案需要占用N個緩存行。類似情況同樣存在于節(jié)點標識。這樣 一來,當系統(tǒng)緩存資源比較緊張時,本發(fā)明技術方案不但減小了緩存行更新的頻率,而且降 低了遍歷操作和其他應用對緩存資源的競爭。圖5為本發(fā)明數(shù)據查找方法實施例的流程示意圖。如圖5所示,該數(shù)據查找方法 實施例主要包括如下步驟步驟S510,從第一存儲區(qū)域獲得第一鏈表,該第一鏈表具有至少一個節(jié)點,每個節(jié) 點至少包括第一數(shù)據和第二數(shù)據;步驟S520,從該第一鏈表中獲得每個節(jié)點的該第一數(shù)據;步驟S530,將每個節(jié)點的該第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈 表;步驟S540,接收查找數(shù)據;步驟S550,按照預設的比較策略對該查找數(shù)據與該第二鏈表中每個節(jié)點的該第一 數(shù)據進行比較;
步驟S560,當存在與該查找數(shù)據匹配的特定第一數(shù)據時,獲得該特定第一數(shù)據所 屬節(jié)點的第二數(shù)據。上述步驟S550中的預設的比較策略,比如包括順序比較、二分法比較或者隨機比
較等等。該第一存儲區(qū)域具有第一訪問速度,該第二存儲區(qū)域具有第二訪問速度,該第二 訪問速度大于該第一訪問速度時,可以提高電子設備查找數(shù)據的速度,進而提高工作效率。數(shù)據查找方法的一個典型舉例,比如在通訊簿中查找某聯(lián)系人的電話,在本舉例 中,均以聯(lián)系人的姓名為查找數(shù)據,手機電話號碼為查找的目標數(shù)據為例。其中,該通訊簿 中存儲著大量聯(lián)系人的多種通訊信息(一個聯(lián)系人的所有通訊信息,為一個節(jié)點),比如座 機電話號碼、手機電話號碼、電子郵箱地址、通信地址和郵編等等?,F(xiàn)有技術中的查找方法, 一般是從通訊簿中一次讀取若干聯(lián)系人的所有通訊信息并連續(xù)存儲到一存儲區(qū)域中,然后 根據用戶輸入的聯(lián)系人姓名對存儲在該存儲區(qū)域中的聯(lián)系人的姓名進行比較,如果沒有則 讀取另一批若干聯(lián)系人的所有通訊信息并存儲到該存儲區(qū)域中并繼續(xù)查找,直到找到該某 聯(lián)系人,則輸出該聯(lián)系人的手機電話號碼。現(xiàn)有技術有些技術方案除了輸出手機電話號碼 之外,可能還進一步輸出其他的所有通訊信息。本發(fā)明針對這種應用,從通訊簿中讀取聯(lián)系 人姓名,存儲到一新的存儲區(qū)域中,形成一新的鏈表,然后根據用戶輸入的聯(lián)系人姓名在該 新的鏈表中進行查找,找到該聯(lián)系人時,則返回到該通訊簿中輸出該聯(lián)系人的手機電話號 碼。其中,存儲該電話簿的空間,即為圖5所示實施例的第一存儲區(qū)域,通訊簿中所有聯(lián)系 人的所有通訊信息,均以該第一鏈表進行存儲;每個聯(lián)系人的姓名和手機電話號碼,分別為 前述的第一數(shù)據和第二數(shù)據;該新的存儲區(qū)域為前述的第二存儲區(qū)域,所有聯(lián)系人的姓名 以該第二鏈表進行存儲。當查找到相匹配的姓名時,則返回到第一鏈表中讀取并輸出該聯(lián) 系人的手機電話號碼,完成手機電話號碼的查找。當對照上述電話簿的簡單舉例時,在了解用于越來越復雜的數(shù)據查找的應用時所 會遭遇的困難就變得顯而易見。當然,需要說明的是,上述電話簿查找僅僅是本發(fā)明查找方 法思想下的一個簡單舉例,決不能因此而簡單理解為本發(fā)明查找方法僅適用于電話簿查找 或者與電話簿查找類似難度的應用。圖6為本發(fā)明鏈表創(chuàng)建系統(tǒng)實施例的組成示意圖,結合圖1所示實施例以及圖2 所示應用實例,該鏈表創(chuàng)建系統(tǒng)主要包括第一獲取模塊610、第二獲取模塊620、預設模塊 630、存儲模塊640以及分配模塊650,其中第一獲取模塊610,用于從第一存儲區(qū)域獲得第一鏈表,該第一鏈表具有至少一個 節(jié)點,每個節(jié)點至少包括第一數(shù)據;第二獲取模塊620,用于從該第一鏈表中獲得每個節(jié)點的該第一數(shù)據;預設模塊630,用于預設第二存儲區(qū)域;存儲模塊640,用于將該第一數(shù)據存儲于該第二存儲區(qū)域中,形成第二鏈表;分配模塊650,用于當該第二存儲區(qū)域的存儲空間不足以繼續(xù)存儲從第一存儲區(qū) 域中獲得的第一數(shù)據,則分配第三存儲區(qū)域;該第三存儲區(qū)域的空間大于該第二存儲區(qū)域 的空間,優(yōu)選地為兩倍于該第二存儲區(qū)域的空間;拷貝模塊660,用于將該第二存儲區(qū)域中的該第二鏈表拷貝至該第三存儲區(qū)域; 再將該第二鏈表拷貝到該第三存儲區(qū)域后,可以釋放該第二存儲區(qū)域的存儲空間。
該第一存儲區(qū)域具有第一訪問速度,該第二存儲區(qū)域具有第二訪問速度,該第二 訪問速度大于該第一訪問速度時,可以提高電子設備查找數(shù)據的速度,進而提高工作效率。該存儲模塊640優(yōu)選緊耦合存儲器(TCM),因為其高速訪問特性,可以顯著提高數(shù) 據的查找速度。如果預設模塊630所預設的第二存儲區(qū)域為TCM時,上述分配模塊650在 擴大該第二存儲區(qū)域的存儲空間時,優(yōu)選在主存空間中重新分配存儲區(qū)域。圖7為本發(fā)明數(shù)據查找系統(tǒng)實施例的組成示意圖。如圖7所示,該數(shù)據查找系統(tǒng) 實施例主要包括第一獲取模塊710、第二獲取模塊720、第一預設模塊730、存儲模塊740、接 收模塊750、第二預設模塊760、比較模塊770以及第三獲取模塊780,其中第一獲取模塊710,用于從第一存儲區(qū)域獲得第一鏈表,該第一鏈表具有至少一個 節(jié)點,每個節(jié)點至少包括第一數(shù)據和第二數(shù)據;第二獲取模塊720,用于從該第一鏈表中獲得每個節(jié)點的該第一數(shù)據;第一預設模塊730,用于預設第二存儲區(qū)域;存儲模塊740,用于將每個節(jié)點的該第一數(shù)據存儲于該第二存儲區(qū)域中,形成第二 鏈表;接收模塊750,用于接收查找數(shù)據;第二預設模塊760,用于預設比較策略;比較模塊770,用于按照預設的比較策略對該查找數(shù)據與該第二鏈表中每個節(jié)點 的該第一數(shù)據進行比較;第三獲取模塊780,用于當存在與該查找數(shù)據匹配的特定第一數(shù)據時,獲得該特定 第一數(shù)據所屬節(jié)點的第二數(shù)據。上述第二預設模塊760所預設的比較策略,比如包括順序比較、二分法比較或者 隨機比較等等。該第一存儲區(qū)域具有第一訪問速度,該第二存儲區(qū)域具有第二訪問速度,該第二 訪問速度大于該第一訪問速度時,可以提高電子設備查找數(shù)據的速度,進而提高工作效率。該存儲模塊740優(yōu)選緊耦合存儲器(TCM),因為其高速訪問特性,可以顯著提高數(shù) 據的查找速度。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的 計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不 同于此處的順序執(zhí)行所示出或描述的步驟。另外,本領域的技術人員應該明白,上述的本發(fā) 明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上, 或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代 碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成 各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這 樣,本發(fā)明不限制于任何特定的硬件和軟件結合。雖然本發(fā)明所揭露的實施方式如上,但所述的內容只是為了便于理解本發(fā)明而采 用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術領域內的技術人員,在不脫離本 發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。
權利要求
1.一種鏈表的創(chuàng)建方法,其特征在于,包括從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點,每個節(jié)點至少包括第一數(shù)據;從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據; 將所述第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表。
2.根據權利要求1所述的方法,其特征在于 所述第一數(shù)據包括所述節(jié)點的標識信息和指針。
3.根據權利要求1所述的方法,其特征在于所述第一存儲區(qū)域具有第一訪問速度,所述第二存儲區(qū)域具有第二訪問速度; 其中,所述第二訪問速度大于所述第一訪問速度。
4.根據權利要求1所述的方法,其特征在于 所述第二存儲區(qū)域為連續(xù)的存儲空間。
5.根據權利要求1所述的方法,其特征在于,該方法進一步包括所述第二存儲區(qū)域不足以繼續(xù)存儲所述第二鏈表時,分配第三存儲區(qū)域; 將所述第二存儲區(qū)域中的所述第二鏈表拷貝至所述第三存儲區(qū)域; 其中,所述第三存儲區(qū)域的空間大于所述第二存儲區(qū)域的空間。
6.一種數(shù)據的查找方法,其特征在于,包括從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點,每個所述節(jié)點至少 包括第一數(shù)據和第二數(shù)據;從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據;將每個所述節(jié)點的所述第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表;接收查找數(shù)據;按照預設的比較策略對所述查找數(shù)據與所述第二鏈表中每個所述節(jié)點的所述第一數(shù) 據進行比較;當存在與所述查找數(shù)據匹配的特定第一數(shù)據時,獲得所述特定第一數(shù)據所屬節(jié)點的第二數(shù)據。
7.一種鏈表的創(chuàng)建系統(tǒng),其特征在于,包括第一獲取模塊,用于從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點, 每個節(jié)點至少包括第一數(shù)據;第二獲取模塊,用于從所述第一鏈表中獲得每個節(jié)點的所述第一數(shù)據; 預設模塊,用于預設第二存儲區(qū)域;存儲模塊,用于將所述第一數(shù)據存儲于所述第二存儲區(qū)域中,形成第二鏈表。
8.根據權利要求7所述的系統(tǒng),其特征在于所述預設模塊用于將連續(xù)的存儲空間預設為所述第二存儲區(qū)域。
9.根據權利要求7所述的系統(tǒng),其特征在于所述第一存儲區(qū)域具有第一訪問速度,所述第二存儲區(qū)域具有第二訪問速度; 其中,所述第二訪問速度大于所述第一訪問速度。
10.根據權利要求7所述的系統(tǒng),其特征在于,該系統(tǒng)進一步包括分配模塊,用于當所述第二存儲區(qū)域不足以繼續(xù)存儲所述第二鏈表時,分配第三存儲區(qū)域;拷貝模塊,用于將所述第二存儲區(qū)域中的所述第二鏈表拷貝至所述第三存儲區(qū)域; 其中,所述第三存儲區(qū)域的空間大于所述第二存儲區(qū)域的空間。
11. 一種數(shù)據的查找系統(tǒng),其特征在于,包括第一獲取模塊,用于從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點, 每個所述節(jié)點至少包括第一數(shù)據和第二數(shù)據;第二獲取模塊,用于從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據; 第一預設模塊,用于預設第二存儲區(qū)域;存儲模塊,用于將每個所述節(jié)點的所述第一數(shù)據存儲于所述第二存儲區(qū)域中,形成第 二鏈表;接收模塊,用于接收查找數(shù)據; 第二預設模塊,用于預設比較策略;比較模塊,用于按照所述比較策略對所述查找數(shù)據與所述第二鏈表中每個所述節(jié)點的 所述第一數(shù)據進行比較;第三獲取模塊,用于當存在與所述查找數(shù)據匹配的特定第一數(shù)據時,獲得所述特定第 一數(shù)據所屬節(jié)點的第二數(shù)據。
全文摘要
本發(fā)明公開了一種鏈表的創(chuàng)建方法及系統(tǒng)、數(shù)據的查找方法及系統(tǒng),其中該鏈表的創(chuàng)建方法包括從第一存儲區(qū)域獲得第一鏈表,所述第一鏈表具有至少一個節(jié)點,每個節(jié)點至少包括第一數(shù)據;從所述第一鏈表中獲得每個所述節(jié)點的所述第一數(shù)據;將所述第一數(shù)據存儲于預設的第二存儲區(qū)域中,形成第二鏈表。與現(xiàn)有技術相比,本發(fā)明針對鏈表訪問的順序性和鏈表結構的離散性,優(yōu)選使用連續(xù)的存儲區(qū)域來存放鏈表節(jié)點標識和節(jié)點指針,從而降低遍歷操作所觸發(fā)的緩存更新次數(shù),提高了被訪問的數(shù)據的訪問速度,解決了鏈表操作頻繁觸發(fā)緩存更新的問題。
文檔編號G06F12/02GK102117278SQ200910243188
公開日2011年7月6日 申請日期2009年12月31日 優(yōu)先權日2009年12月31日
發(fā)明者于辰濤, 王佐 申請人:聯(lián)想(北京)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
三台县| 青铜峡市| 通化县| 柳州市| 马关县| 平果县| 和田市| 格尔木市| 施秉县| 汤原县| 宜良县| 定西市| 马边| 章丘市| 海门市| 托里县| 定边县| 苍山县| 定西市| 洛扎县| 三河市| 米易县| 临沭县| 富锦市| 凌源市| 神池县| 布尔津县| 石棉县| 丰都县| 福鼎市| 贡嘎县| 岳西县| 阜平县| 安阳市| 宁陕县| 芒康县| 武穴市| 涟水县| 中江县| 石景山区| 贞丰县|