專利名稱:一種基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及結(jié)構(gòu)化語言編程技術(shù),尤其涉及一種基于結(jié)構(gòu)化語言的鏈表管 理系統(tǒng)及方法。
背景技術(shù):
在軟件開發(fā)中,鏈表根據(jù)需要?jiǎng)討B(tài)分配內(nèi)存空間,是一種動(dòng)態(tài)地進(jìn)行存儲(chǔ) 分配的結(jié)構(gòu),圖1是一種典型的雙向鏈表結(jié)構(gòu)示意圖,如圖l所示,該雙向鏈
表有n個(gè)節(jié)點(diǎn),節(jié)點(diǎn)0是鏈表的頭部,節(jié)點(diǎn)n是鏈表的尾部,這兩個(gè)節(jié)點(diǎn)不用 來存儲(chǔ)數(shù)據(jù),只用來標(biāo)識(shí)鏈表的起止位置,中間n-2個(gè)節(jié)點(diǎn)可以用來存儲(chǔ)數(shù)據(jù)。 每個(gè)節(jié)點(diǎn)具有三個(gè)屬性數(shù)據(jù)、上一個(gè)節(jié)點(diǎn)指針和下一個(gè)節(jié)點(diǎn)指針,其中,數(shù)
據(jù)就是鏈表管理的數(shù)據(jù);上一個(gè)節(jié)點(diǎn)指針存放著與該節(jié)點(diǎn)前面相鄰的節(jié)點(diǎn)的內(nèi) 存地址,對于節(jié)點(diǎn)0來說,該地址為空值;下一個(gè)節(jié)點(diǎn)指針存放著與該節(jié)點(diǎn)后 面相鄰的節(jié)點(diǎn)的內(nèi)存地址,對于節(jié)點(diǎn)n來說,該地址為空值。
目前,面向?qū)ο笳Z言提供了這些鏈表的操作方法和參考實(shí)現(xiàn),但是在結(jié)構(gòu) 化語言中,沒有一種統(tǒng)一的處理系統(tǒng)來實(shí)現(xiàn)鏈表操作。軟件開發(fā)人員必須自己 實(shí)現(xiàn)與自己業(yè)務(wù)相關(guān)的鏈表操作,如鏈表創(chuàng)建、鏈表刪除以及節(jié)點(diǎn)添加、節(jié)點(diǎn) 刪除、節(jié)點(diǎn)更新、節(jié)點(diǎn)查詢等。
由于在不同項(xiàng)目中4吏用鏈表,需要有各自的管理代碼,所以,現(xiàn)有結(jié)構(gòu)化 語言實(shí)現(xiàn)鏈表管理時(shí),重復(fù)代碼多,不僅占用了代碼空間,而且可維護(hù)性及擴(kuò) 展性比較差,此外,大量的鏈表管理代碼延長了軟件開發(fā)時(shí)間,降低了軟件開 發(fā)效率,從而使得鏈表的使用成本變大,軟件開發(fā)效率低。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)及方法,能夠簡化代碼,提高代碼可維護(hù)性及擴(kuò)展性,且提高軟件開發(fā)效率。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
一種基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng),包括環(huán)境模塊、鏈表管理模塊、
存儲(chǔ)模塊,其中,
環(huán)境模塊用于在操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口 ; 鏈表管理模塊,用于根據(jù)來自客戶程序的鏈表處理請求,調(diào)用環(huán)境模塊中 的接口和/或存儲(chǔ)模塊中的節(jié)點(diǎn)比較接口 ,對存儲(chǔ)模塊中存儲(chǔ)的鏈表進(jìn)行處理; 存儲(chǔ)模塊,用于存儲(chǔ)鏈表,以及鏈表的節(jié)點(diǎn)比較接口。 一種基于結(jié)構(gòu)化語言的鏈表管理方法,包括
操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口;
客戶程序運(yùn)行過程中需要進(jìn)行鏈表處理時(shí),客戶程序?qū)㈡湵硖幚碚埱蟀l(fā)送 至鏈表管理模塊;
鏈表管理模塊根據(jù)所接收的鏈表處理請求,調(diào)用所述與鏈表處理相關(guān)的接 口和/或節(jié)點(diǎn)比較接口對鏈表進(jìn)行處理。
所述與鏈表處理相關(guān)的接口包括內(nèi)存分配接口、信號(hào)量分配接口;
所述鏈表處理請求為鏈表創(chuàng)建請求,其攜帶的鏈表創(chuàng)建參數(shù)包括鏈表類 型,節(jié)點(diǎn)數(shù)據(jù)、節(jié)點(diǎn)比較接口;
所述鏈表管理模塊對鏈表進(jìn)行處理為
調(diào)用內(nèi)存分配接口進(jìn)行內(nèi)存分配,并根據(jù)鏈表創(chuàng)建參數(shù)中攜帶的鏈表創(chuàng)建 參數(shù)創(chuàng)建鏈表;
調(diào)用信號(hào)量分配接口分配關(guān)于所創(chuàng)建鏈表的信號(hào)量并存儲(chǔ); 為所創(chuàng)建的鏈表分配鏈表ID并存儲(chǔ),并將所述鏈表ID返回客戶程序。 所述與鏈表處理相關(guān)的接口包括內(nèi)存回收接口、信號(hào)量回收接口; 所述鏈表處理請求為鏈表刪除請求,其攜帶的鏈表刪除參數(shù)包括需要?jiǎng)h 除的《連表ID;
所述鏈表管理模塊對鏈表進(jìn)行處理為 根據(jù)鏈表刪除參數(shù)中的鏈表ID查找需要?jiǎng)h除的鏈表;調(diào)用內(nèi)存回收接口釋放所述鏈表及鏈表中節(jié)點(diǎn)的內(nèi)存空間,并調(diào)用信號(hào)量 回收接口回收所刪除鏈表對應(yīng)的信號(hào)量; 向客戶程序返回鏈表刪除成功消息。
所述與鏈表處理相關(guān)的接口包括內(nèi)存分配接口、信號(hào)量占有接口、信號(hào) 量釋放接口;
所述鏈表處理請求為節(jié)點(diǎn)創(chuàng)建請求,其攜帶的節(jié)點(diǎn)創(chuàng)建參數(shù)包括鏈表ID 和節(jié)點(diǎn)數(shù)據(jù),其中,所述節(jié)點(diǎn)數(shù)據(jù)包括節(jié)點(diǎn)數(shù)據(jù)數(shù)值和唯一標(biāo)識(shí)該數(shù)據(jù)的節(jié)點(diǎn) 數(shù)據(jù)標(biāo)識(shí);
所述鏈表管理模塊對鏈表進(jìn)行處理為
查找節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;
判斷所述鏈表中,需創(chuàng)建的節(jié)點(diǎn)是否已存在,需創(chuàng)建的節(jié)點(diǎn)已存在,向客 戶程序返回節(jié)點(diǎn)已存在消息,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量; 需創(chuàng)建的節(jié)點(diǎn)不存在,調(diào)用內(nèi)存分配接口創(chuàng)建節(jié)點(diǎn),并向客戶程序返回所創(chuàng)建 節(jié)點(diǎn)的節(jié)點(diǎn)指針,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
所述判斷需創(chuàng)建的節(jié)點(diǎn)是否已存在為調(diào)用節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID所對應(yīng) 鏈表的節(jié)點(diǎn)比較接口 ,判斷所述鏈表中是否存在具有所述節(jié)點(diǎn)創(chuàng)建參數(shù)中的節(jié) 點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)。
所述與鏈表處理相關(guān)的接口包括信號(hào)量占有接口、信號(hào)量釋放接口;
所述鏈表處理請求為節(jié)點(diǎn)查詢請求,其攜帶的節(jié)點(diǎn)查詢參數(shù)包括鏈表ID、 含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù);
所述鏈表管理模塊對鏈表進(jìn)行處理為
查找節(jié)點(diǎn)查詢參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;
調(diào)用所述鏈表的節(jié)點(diǎn)比較接口查詢節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)與節(jié)點(diǎn)查詢與節(jié)點(diǎn)查詢參 數(shù)中攜帶的含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù)所對應(yīng)的節(jié)點(diǎn),并返回所述節(jié)點(diǎn)的節(jié) 點(diǎn)指針至客戶程序;調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
所述與鏈表處理相關(guān)的接口包括信號(hào)量占有接口、信號(hào)量釋放接口;
所述鏈表處理請求為節(jié)點(diǎn)更新請求,其攜帶的節(jié)點(diǎn)更新參數(shù)包括鏈表ID
和需要更新的節(jié)點(diǎn)數(shù)據(jù),其中,所述節(jié)點(diǎn)數(shù)據(jù)具體包括需更新的節(jié)點(diǎn)數(shù)據(jù)數(shù)值
和需更新節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí);
所述鏈表管理模塊對鏈表進(jìn)行處理為
查找節(jié)點(diǎn)更新參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;
在所述鏈表中查找需要更新的節(jié)點(diǎn),并將節(jié)點(diǎn)更新參數(shù)中需要更新的節(jié)點(diǎn) 數(shù)據(jù)更新至所述需要更新的節(jié)點(diǎn);
向客戶程序返回更新成功消息,并調(diào)用信號(hào)量釋放接口,釋放所述鏈表的
信號(hào)量。
所述與鏈表處理相關(guān)的接口包括內(nèi)存回收接口、信號(hào)量占有接口、信號(hào) 量釋放接口;
所述鏈表處理請求為節(jié)點(diǎn)刪除請求,其攜帶的節(jié)點(diǎn)刪除參數(shù)包括鏈表ID、 需要?jiǎng)h除節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí);
所述鏈表管理模塊對鏈表進(jìn)行處理為
查找節(jié)點(diǎn)刪除參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;
在所述鏈表中查找需要?jiǎng)h除的節(jié)點(diǎn);
調(diào)用內(nèi)存回收接口刪除所述需要?jiǎng)h除的節(jié)點(diǎn),并向客戶程序返回刪除成功 消息,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
所述刪除需要?jiǎng)h除的節(jié)點(diǎn)為需要?jiǎng)h除的節(jié)點(diǎn)不是頭節(jié)點(diǎn)或者尾節(jié)點(diǎn),將 所述需要?jiǎng)h除的節(jié)點(diǎn)前面的節(jié)點(diǎn)和后面的節(jié)點(diǎn)的指針連接起來,再調(diào)用內(nèi)存回 收接口回收需要?jiǎng)h除的節(jié)點(diǎn)對應(yīng)的內(nèi)存;需要?jiǎng)h除的節(jié)點(diǎn)是頭節(jié)點(diǎn)或者尾節(jié)點(diǎn), 直接回收所述需要?jiǎng)h除的節(jié)點(diǎn)對應(yīng)的內(nèi)存。
本發(fā)明基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)及方法。在系統(tǒng)初始化時(shí),根據(jù)操作系統(tǒng)確定與鏈表管理相關(guān)的接口 ,在進(jìn)行鏈表處理時(shí),調(diào)用相應(yīng)的接口,并 結(jié)合鏈表處理參數(shù)便可實(shí)現(xiàn)對鏈表的處理。所以,本發(fā)明基于結(jié)構(gòu)化語言的鏈 表管理系統(tǒng)及方法,根據(jù)操作系統(tǒng)確定與鏈表管理相關(guān)的接口,在不同項(xiàng)目中, 通過調(diào)用相應(yīng)的接口,便可按照設(shè)定的處理流程實(shí)現(xiàn)鏈表管理,不需要分別編 寫代碼實(shí)現(xiàn)鏈表管理,從而,對于大規(guī)模的軟件項(xiàng)目開發(fā),本發(fā)明能夠明顯簡 化代碼、提高代碼可維護(hù)性和擴(kuò)展性,從而提高軟件開發(fā)效率。
圖1為一種典型的雙向鏈表結(jié)構(gòu)示意圖2為本發(fā)明基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)結(jié)構(gòu)圖; 圖3為本發(fā)明基于結(jié)構(gòu)化語言的鏈表管理方法流程圖; 圖4為本發(fā)明進(jìn)行鏈表創(chuàng)建時(shí)的方法流程圖; 圖5為本發(fā)明進(jìn)行鏈表刪除時(shí)的方法流程圖; 圖6為本發(fā)明進(jìn)行節(jié)點(diǎn)創(chuàng)建時(shí)的方法流程圖; 圖7為本發(fā)明進(jìn)行節(jié)點(diǎn)查詢時(shí)的方法流程圖; 圖8為本發(fā)明進(jìn)行節(jié)點(diǎn)更新時(shí)的方法流程圖; 圖9為本發(fā)明進(jìn)行節(jié)點(diǎn)刪除時(shí)的方法流程圖。
具體實(shí)施例方式
本發(fā)明的基本思想是在系統(tǒng)初始化時(shí),根據(jù)操作系統(tǒng)確定與鏈表管理相 關(guān)的接口,在進(jìn)行鏈表處理時(shí),調(diào)用相應(yīng)的接口,并結(jié)合鏈表處理參數(shù)便可實(shí) 現(xiàn)對鏈表的處理。
下面結(jié)合附圖對技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
圖2為本發(fā)明基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)結(jié)構(gòu)圖,如圖2所示,本發(fā) 明基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng)一般包括環(huán)境模塊21、鏈表管理模塊22、 存儲(chǔ)模塊23,其中,
環(huán)境模塊21用于在操作系統(tǒng)啟動(dòng)時(shí),根據(jù)所述啟動(dòng)的操作系統(tǒng),確定與鏈表處理相關(guān)的接口;
鏈表管理模塊22,用于根據(jù)來自客戶程序的鏈表處理請求,調(diào)用環(huán)境模塊
21中的接口和/或存儲(chǔ)模塊23中存儲(chǔ)的節(jié)點(diǎn)比較接口,對存儲(chǔ)模塊23中存儲(chǔ)的
鏈表進(jìn)行處理;
存儲(chǔ)模塊23,用于存儲(chǔ)鏈表,以及鏈表的節(jié)點(diǎn)比較接口。 由于鏈表中節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)可以是標(biāo)準(zhǔn)類型,也可以是用戶自定義的復(fù)雜
類型,所以,鏈表的節(jié)點(diǎn)比較接口不一定相同,每個(gè)鏈表對應(yīng)各自的節(jié)點(diǎn)比較
接口,鏈表的節(jié)點(diǎn)比較接口作為鏈表的參數(shù)之一,在鏈表創(chuàng)建時(shí)被指定。
圖3為本發(fā)明基于結(jié)構(gòu)化語言的鏈表管理方法流程圖,如圖3所示,本發(fā)
明基于結(jié)構(gòu)化語言的鏈表管理方法一般包括以下步驟
步驟31:操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口。
這里,與鏈表處理相關(guān)的接口一般包括內(nèi)存分配接口、內(nèi)存回收接口、
信號(hào)量分配接口、信號(hào)量占有接口、信號(hào)量釋放接口、信號(hào)量回收接口等。在
不同的操作系統(tǒng)中,這些接口也各不相同,必須首先根據(jù)操作系統(tǒng)確定這些接
口,才能夠執(zhí)行本方法的后續(xù)步驟。
步驟32:客戶程序運(yùn)行過程中需要進(jìn)行鏈表處理。
這里,客戶程序運(yùn)行過程中的鏈表處理可以是鏈表創(chuàng)建、鏈表刪除、節(jié)點(diǎn) 創(chuàng)建、節(jié)點(diǎn)查詢、節(jié)點(diǎn)更新、節(jié)點(diǎn)刪除等操作。
步驟33:客戶程序?qū)㈡湵硖幚碚埱蟀l(fā)送至鏈表管理模塊。
這里,鏈表處理請求攜帶相應(yīng)的鏈表處理參數(shù)。例如,
鏈表處理請求為鏈表創(chuàng)建請求時(shí),攜帶的鏈表創(chuàng)建參數(shù)一般包括鏈表類 型,節(jié)點(diǎn)數(shù)據(jù)、節(jié)點(diǎn)比較接口。其中,鏈表類型可以是單向鏈表、雙向鏈表或 環(huán)形鏈表;節(jié)點(diǎn)數(shù)據(jù)具體包括節(jié)點(diǎn)數(shù)據(jù)數(shù)值和唯一標(biāo)識(shí)該數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)。
鏈表處理請求為鏈表刪除請求時(shí),攜帶的鏈表刪除參數(shù)一般包括需要?jiǎng)h除 的鏈表ID。
鏈表處理請求為節(jié)點(diǎn)創(chuàng)建請求時(shí),攜帶的節(jié)點(diǎn)創(chuàng)建參數(shù)一般包括鏈表ID 和節(jié)點(diǎn)數(shù)據(jù)。鏈表處理請求為節(jié)點(diǎn)查詢請求時(shí),攜帶的節(jié)點(diǎn)查詢參數(shù)一般包括鏈表ID、
含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù)。
鏈表處理請求為節(jié)點(diǎn)更新請求時(shí),攜帶的節(jié)點(diǎn)更新參數(shù)一般包括鏈表ID 和需要更新的節(jié)點(diǎn)數(shù)據(jù)。
鏈表處理請求為節(jié)點(diǎn)刪除請求時(shí),攜帶的節(jié)點(diǎn)刪除參數(shù)一般包括鏈表ID、 節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)。
步驟34:鏈表管理模塊根據(jù)所接收的鏈表處理請求,調(diào)用步驟31中確定 的相應(yīng)的接口對鏈表進(jìn)行處理。
圖4為本發(fā)明進(jìn)行鏈表創(chuàng)建時(shí)的方法流程圖,如圖4所示,本發(fā)明進(jìn)行鏈 表創(chuàng)建時(shí), 一般包括以下步驟
步驟41;客戶程序向鏈表管理模塊發(fā)送鏈表創(chuàng)建請求。
這里,鏈表創(chuàng)建請求攜帶的鏈表創(chuàng)建參數(shù)一般包括鏈表類型,節(jié)點(diǎn)數(shù)據(jù)、 節(jié)點(diǎn)比較接口 。
步驟42:鏈表管理模塊調(diào)用內(nèi)存分配接口在存儲(chǔ)模塊中進(jìn)行內(nèi)存分配,并
根據(jù)鏈表創(chuàng)建請求中攜帶的鏈表創(chuàng)建參數(shù)創(chuàng)建鏈表。
鏈表管理模塊具體調(diào)用環(huán)境模塊中確定的內(nèi)存分配接口進(jìn)行內(nèi)存分配。 步驟43:鏈表管理模塊調(diào)用信號(hào)量分配接口分配關(guān)于所創(chuàng)建鏈表的信號(hào)量
并存儲(chǔ)。
鏈表管理模塊具體調(diào)用環(huán)境模塊中確定的信號(hào)量分配接口進(jìn)行信號(hào)量分 配,這里,為鏈表創(chuàng)建信號(hào)量是為了保護(hù)對該鏈表的訪問,具體的,對鏈表中 的節(jié)點(diǎn)進(jìn)行操作時(shí),通過占有該鏈表的信號(hào)量來屏蔽其他應(yīng)用對該鏈表的訪問, 在對鏈表中的節(jié)點(diǎn)」燥作完成后,再釋放該鏈表的信號(hào)量,允許其他應(yīng)用對鏈表 進(jìn)行訪問。
步驟44:鏈表管理模塊為所創(chuàng)建的鏈表分配鏈表ID并存儲(chǔ),之后將所述 鏈表ID返回客戶程序。
這里,可以通過隨;機(jī)分配、遞增分配等多種方式分配4連表ID,只要保證一 個(gè)鏈表ID唯一標(biāo)識(shí)一個(gè)鏈表即可,鏈表ID作為鏈表的參數(shù)之一存儲(chǔ)于存儲(chǔ)模塊中。
圖5為本發(fā)明進(jìn)行鏈表刪除時(shí)的方法流程圖,如圖5所示,本發(fā)明進(jìn)行鏈
表刪除時(shí), 一般包括以下步驟
步驟51:客戶程序向鏈表管理模塊發(fā)送鏈表刪除請求。
所述鏈表刪除請求攜帶的鏈表刪除參數(shù)一般包括需要?jiǎng)h除的鏈表ID。
步驟52:鏈表管理模塊根據(jù)鏈表刪除參數(shù)中的鏈表TD查找需要?jiǎng)h除的鏈表。
這里,鏈表管理模塊具體在存儲(chǔ)模塊中進(jìn)行查找。
步驟53:鏈表管理模塊調(diào)用內(nèi)存回收接口回收所述鏈表以及其中節(jié)點(diǎn)的內(nèi) 存空間,并調(diào)用信號(hào)量回收接口釋放所刪除鏈表對應(yīng)的信號(hào)量。
鏈表管理模塊具體調(diào)用環(huán)境模塊中確定的內(nèi)存回收接口和信號(hào)量回收接口 對存儲(chǔ)模塊中的鏈表進(jìn)行刪除。
步驟54:鏈表管理模塊向客戶程序返回鏈表刪除成功消息。
圖6為本發(fā)明進(jìn)行節(jié)點(diǎn)創(chuàng)建時(shí)的方法流程圖,如圖6所示,本發(fā)明進(jìn)行節(jié) 點(diǎn)創(chuàng)建時(shí), 一般包括以下步驟
步驟61:客戶程序向鏈表管理模塊發(fā)送節(jié)點(diǎn)創(chuàng)建請求。
這里,節(jié)點(diǎn)創(chuàng)建請求瑪帶的節(jié)點(diǎn)創(chuàng)建參數(shù)一般包括鏈表ID和節(jié)點(diǎn)數(shù)據(jù), 其中,節(jié)點(diǎn)數(shù)據(jù)具體包括節(jié)點(diǎn)數(shù)據(jù)數(shù)值和唯一標(biāo)識(shí)該數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)。
步驟62:鏈表管理模塊查找節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID對應(yīng)的鏈表。
這里,鏈表管理^f莫塊具體在存儲(chǔ)模塊中進(jìn)行查找。
步驟63:鏈表管理模塊調(diào)用信號(hào)量占有接口,占有所述鏈表的信號(hào)量。 鏈表管理模塊具體調(diào)用環(huán)境模塊中確定的信號(hào)量占有接口占有鏈表的信號(hào)量。
步驟64:鏈表管理模塊判斷所述鏈表中,需創(chuàng)建的節(jié)點(diǎn)是否已存在,如果 是,執(zhí)行步驟65;否則,執(zhí)行步驟66。
這里,具體通過調(diào)用節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID所對應(yīng)鏈表的節(jié)點(diǎn)比較接口 , 判斷所述鏈表中是否存在具有步驟61所述節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn),從而判斷需創(chuàng)建的節(jié)點(diǎn)是否已存在,鏈表的節(jié)點(diǎn)比較接口在創(chuàng)建該鏈表時(shí)已被指定,直接調(diào) 用存儲(chǔ)單元中的節(jié)點(diǎn)比較接口即可。
步驟65:鏈表管理模塊向客戶程序返回節(jié)點(diǎn)已存在消息,轉(zhuǎn)到步驟68。 步驟66:鏈表管理模塊調(diào)用內(nèi)存分配接口在存儲(chǔ)模塊中分配內(nèi)存,并填充 節(jié)點(diǎn)創(chuàng)建參^:中的節(jié)點(diǎn)數(shù)據(jù)至所分配的內(nèi)存,即完成節(jié)點(diǎn)創(chuàng)建。
步驟67:鏈表管理模塊向客戶程序返回所創(chuàng)建節(jié)點(diǎn)的節(jié)點(diǎn)指針,即內(nèi)存地址。
步驟68:鏈表管理模塊調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量,流 程結(jié)束。
圖7為本發(fā)明進(jìn)行節(jié)點(diǎn)查詢時(shí)的方法流程圖,如圖7所示,本發(fā)明進(jìn)行節(jié) 點(diǎn)查詢時(shí), 一般包括以下步驟
步驟71:客戶程序向鏈表管理模塊發(fā)送節(jié)點(diǎn)查詢請求。
這里,節(jié)點(diǎn)查詢請求攜帶的節(jié)點(diǎn)查詢參數(shù)一般包括鏈表ID、含有節(jié)點(diǎn)數(shù) 據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù)。
步驟72:鏈表管理模塊查找節(jié)點(diǎn)查詢參數(shù)中鏈表ID對應(yīng)的鏈表。
這里,鏈表管理模塊具體在存儲(chǔ)模塊中進(jìn)行查找。
步驟73:鏈表管理模塊調(diào)用信號(hào)量占有接口,占有所述鏈表的信號(hào)量。
步驟74:鏈表管理模塊判斷所述鏈表中,需要查詢的節(jié)點(diǎn)是否存在,如果 是,執(zhí)行步驟75;否則,轉(zhuǎn)到步驟76。
這里,判斷需要查詢的節(jié)點(diǎn)是否存在為調(diào)用所述鏈表的節(jié)點(diǎn)比較接口遍 歷所述鏈表,判斷是否存在節(jié)點(diǎn)查詢參數(shù)中攜帶的含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù) 據(jù)所對應(yīng)的節(jié)點(diǎn)。
步驟75:鏈表管理模塊返回所述節(jié)點(diǎn)的節(jié)點(diǎn)指針至客戶程序,轉(zhuǎn)到步驟77。 步驟76:鏈表管理模塊向客戶程序返回查詢失敗消息。 步驟77:鏈表管理模塊調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量,流 程結(jié)束。
圖8為本發(fā)明進(jìn)行節(jié)點(diǎn)更新時(shí)的方法流程圖,如圖8所示,本發(fā)明進(jìn)行節(jié)點(diǎn)更新時(shí), 一般包括以下步驟
步驟81:客戶程序向鏈表管理模塊發(fā)送節(jié)點(diǎn)更新請求。
這里,節(jié)點(diǎn)更新請求攜帶的節(jié)點(diǎn)更新參數(shù)一般包括鏈表ID和需要更新的
節(jié)點(diǎn)數(shù)據(jù),其中,節(jié)點(diǎn)數(shù)據(jù)具體包括需更新的節(jié)點(diǎn)數(shù)據(jù)數(shù)值和需更新節(jié)點(diǎn)的節(jié)
點(diǎn)數(shù)據(jù)標(biāo)識(shí)。
步驟82:鏈表管理模塊查找節(jié)點(diǎn)更新參數(shù)中鏈表ID對應(yīng)的鏈表。 這里,鏈表管理模塊具體在存儲(chǔ)模塊中進(jìn)行查找。 步驟83:鏈表管理模塊調(diào)用信號(hào)量占有接口,占有所述鏈表的信號(hào)量。 步驟84:鏈表管理模塊在所述鏈表中查找需要更新的節(jié)點(diǎn)。 這里,具體通過調(diào)用鏈表的節(jié)點(diǎn)比較接口 ,查找節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)與步驟81 所述需更新節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)一致的節(jié)點(diǎn)。
步驟85:將節(jié)點(diǎn)更新參數(shù)中需要更新的節(jié)點(diǎn)數(shù)據(jù)更新至所述需要更新的節(jié)點(diǎn)。
這里,更新數(shù)據(jù)即以需更新的節(jié)點(diǎn)數(shù)據(jù)數(shù)值替換存儲(chǔ)模塊中需更新節(jié)點(diǎn)之 前的節(jié)點(diǎn)數(shù)據(jù)數(shù)值。
步驟86:鏈表管理模塊向客戶程序返回更新成功消息,并調(diào)用信號(hào)量釋放 接口,釋放所述鏈表的信號(hào)量。
圖9為本發(fā)明進(jìn)行節(jié)點(diǎn)刪除時(shí)的方法流程圖,如圖9所示,本發(fā)明進(jìn)行節(jié) 點(diǎn)刪除時(shí), 一般包括以下步驟
步驟91:客戶程序向鏈表管理模塊發(fā)送節(jié)點(diǎn)刪除請求。
這里,節(jié)點(diǎn)刪除請求攜帶的節(jié)點(diǎn)刪除參數(shù)一般包括鏈表ID、需要?jiǎng)h除節(jié) 點(diǎn)的含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù)。
步驟92:鏈表管理模塊查找節(jié)點(diǎn)刪除參數(shù)中鏈表ID對應(yīng)的鏈表。
這里,鏈表管理模塊具體在存儲(chǔ)模塊中進(jìn)行查找。
步驟93:鏈表管理模塊調(diào)用信號(hào)量占有接口,占有所述鏈表的信號(hào)量。
步驟94:鏈表管理模塊在所述鏈表中查找需要?jiǎng)h除的節(jié)點(diǎn)。
這里,具體通過調(diào)用鏈表的節(jié)點(diǎn)比較接口,查找步驟92所述鏈表中節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)與步驟91所述需要?jiǎng)h除節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)一致的節(jié)點(diǎn),即為需要?jiǎng)h除 的節(jié)點(diǎn)。
步驟95:鏈表管理模塊刪除存儲(chǔ)模塊中的所述節(jié)點(diǎn),并向客戶程序返回刪 除成功消息。
刪除存儲(chǔ)模塊中鏈表的節(jié)點(diǎn)具體為如果需要?jiǎng)h除的節(jié)點(diǎn)不是頭節(jié)點(diǎn)或者 尾節(jié)點(diǎn),則將該節(jié)點(diǎn)前面的節(jié)點(diǎn)和后面的節(jié)點(diǎn)的指針連接起來,之后調(diào)用內(nèi)存 回收接口回收需要?jiǎng)h除的節(jié)點(diǎn)對應(yīng)的內(nèi)存。例如,如果節(jié)點(diǎn)b的上一個(gè)節(jié)點(diǎn)指 針指向節(jié)點(diǎn)a (即節(jié)點(diǎn)a的下一個(gè)節(jié)點(diǎn)指針指向節(jié)點(diǎn)b),下一個(gè)節(jié)點(diǎn)指針指 向節(jié)點(diǎn)c (即節(jié)點(diǎn)c的上一個(gè)節(jié)點(diǎn)指針指向節(jié)點(diǎn)b),那么,刪除節(jié)點(diǎn)b時(shí), 修改節(jié)點(diǎn)a的下一個(gè)節(jié)點(diǎn)指針指向節(jié)點(diǎn)c、節(jié)點(diǎn)c的上一個(gè)節(jié)點(diǎn)指針指向節(jié)點(diǎn) a,之后調(diào)用內(nèi)存回收接口回收節(jié)點(diǎn)b對應(yīng)的內(nèi)存;如果需要?jiǎng)h除的節(jié)點(diǎn)是頭 節(jié)點(diǎn)或者尾節(jié)點(diǎn),則直接回收所述需要?jiǎng)h除的節(jié)點(diǎn)對應(yīng)的內(nèi)存,不需要做節(jié)點(diǎn) 連接。
步驟96:鏈表管理模塊調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量. 以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng),其特征在于,該系統(tǒng)包括環(huán)境模塊、鏈表管理模塊、存儲(chǔ)模塊,其中,環(huán)境模塊用于在操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口;鏈表管理模塊,用于根據(jù)來自客戶程序的鏈表處理請求,調(diào)用環(huán)境模塊中的接口和/或存儲(chǔ)模塊中的節(jié)點(diǎn)比較接口,對存儲(chǔ)模塊中存儲(chǔ)的鏈表進(jìn)行處理;存儲(chǔ)模塊,用于存儲(chǔ)鏈表,以及鏈表的節(jié)點(diǎn)比較接口。
2、 一種基于結(jié)構(gòu)化語言的鏈表管理方法,其特征在于,該方法包括 操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口;客戶程序運(yùn)行過程中需要進(jìn)行鏈表處理時(shí),客戶程序?qū)㈡湵硖幚碚埱蟀l(fā)送 至鏈表管理模塊;鏈表管理模塊根據(jù)所接收的鏈表處理請求,調(diào)用所述與鏈表處理相關(guān)的接 口和/或節(jié)點(diǎn)比較接口對鏈表進(jìn)行處理。
3、 根據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括內(nèi)存分配接口 、信號(hào)量分配接口;所述鏈表處理請求為鏈表創(chuàng)建請求,其攜帶的鏈表創(chuàng)建參數(shù)包括鏈表類 型,節(jié)點(diǎn)lt據(jù)、節(jié)點(diǎn)比較4妻口;所述鏈表管理模塊對鏈表進(jìn)行處理為調(diào)用內(nèi)存分配接口進(jìn)行內(nèi)存分配,并根據(jù)鏈表創(chuàng)建參數(shù)中攜帶的鏈表創(chuàng)建 參數(shù)創(chuàng)建鏈表;調(diào)用信號(hào)量分配接口分配關(guān)于所創(chuàng)建鏈表的信號(hào)量并存儲(chǔ); 為所創(chuàng)建的鏈表分配鏈表ID并存儲(chǔ),并將所述鏈表ID返回客戶程序。
4、 根據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括內(nèi)存回收接口、信號(hào)量回收接口;所述鏈表處理請求為鏈表刪除請求,其攜帶的鏈表刪除參數(shù)包括需要?jiǎng)h 除的鏈表ID;所述鏈表管理模塊對鏈表進(jìn)行處理為根據(jù)鏈表刪除參數(shù)中的鏈表ID查找需要?jiǎng)h除的鏈表;調(diào)用內(nèi)存回收接口釋放所述鏈表及鏈表中節(jié)點(diǎn)的內(nèi)存空間,并調(diào)用信號(hào)量回收接口回收所刪除鏈表對應(yīng)的信號(hào)量; 向客戶程序返回鏈表刪除成功消息。
5、 根據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括內(nèi)存分配接口、信號(hào)量占有接口、信號(hào)量釋放接口;所述鏈表處理請求為節(jié)點(diǎn)創(chuàng)建請求,其攜帶的節(jié)點(diǎn)創(chuàng)建參數(shù)包括鏈表ID 和節(jié)點(diǎn)數(shù)據(jù),其中,所述節(jié)點(diǎn)數(shù)據(jù)包括節(jié)點(diǎn)數(shù)據(jù)數(shù)值和唯一標(biāo)識(shí)該數(shù)據(jù)的節(jié)點(diǎn) 數(shù)據(jù)標(biāo)識(shí);所述鏈表管理模塊對鏈表進(jìn)行處理為查找節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;判斷所述鏈表中,需創(chuàng)建的節(jié)點(diǎn)是否已存在,需創(chuàng)建的節(jié)點(diǎn)已存在,向客 戶程序返回節(jié)點(diǎn)已存在消息,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量; 需創(chuàng)建的節(jié)點(diǎn)不存在,調(diào)用內(nèi)存分配接口創(chuàng)建節(jié)點(diǎn),并向客戶程序返回所創(chuàng)建 節(jié)點(diǎn)的節(jié)點(diǎn)指針,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
6、 根據(jù)權(quán)利要求5所迷的鏈表管理方法,其特征在于,所述判斷需創(chuàng)建的 節(jié)點(diǎn)是否已存在為調(diào)用節(jié)點(diǎn)創(chuàng)建參數(shù)中鏈表ID所對應(yīng)鏈表的節(jié)點(diǎn)比較接口 , 判斷所述鏈表中是否存在具有所述節(jié)點(diǎn)創(chuàng)建參數(shù)中的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)。
7、 沖艮據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括信號(hào)量占有接口、信號(hào)量釋放接口;所述鏈表處理請求為節(jié)點(diǎn)查詢請求,其攜帶的節(jié)點(diǎn)查詢參數(shù)包括鏈表ID、 含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù);所述鏈表管理模塊對鏈表進(jìn)行處理為查找節(jié)點(diǎn)查詢參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;調(diào)用所述鏈表的節(jié)點(diǎn)比較接口查詢節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)與節(jié)點(diǎn)查詢與節(jié)點(diǎn)查詢參 數(shù)中攜帶的含有節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí)的節(jié)點(diǎn)數(shù)據(jù)所對應(yīng)的節(jié)點(diǎn),并返回所述節(jié)點(diǎn)的節(jié) 點(diǎn)指針至客戶程序;調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
8、 根據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括信號(hào)量占有接口、信號(hào)量釋放接口;所述鏈表處理請求為節(jié)點(diǎn)更新請求,其攜帶的節(jié)點(diǎn)更新參數(shù)包括鏈表ID 和需要更新的節(jié)點(diǎn)^:據(jù),其中,所述節(jié)點(diǎn)數(shù)據(jù)具體包括需更新的節(jié)點(diǎn)數(shù)據(jù)數(shù)值 和需更新節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí);所述鏈表管理模塊對鏈表進(jìn)行處理為查找節(jié)點(diǎn)更新參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;在所述鏈表中查找需要更新的節(jié)點(diǎn),并將節(jié)點(diǎn)更新參數(shù)中需要更新的節(jié)點(diǎn) 數(shù)據(jù)更新至所述需要更新的節(jié)點(diǎn);向客戶程序返回更新成功消息,并調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
9、 根據(jù)權(quán)利要求2所述的鏈表管理方法,其特征在于,所述與鏈表處理相 關(guān)的接口包括內(nèi)存回收接口、信號(hào)量占有接口、信號(hào)量釋放接口;所述鏈表處理請求為節(jié)點(diǎn)刪除請求,其攜帶的節(jié)點(diǎn)刪除參數(shù)包括鏈表ID、 需要?jiǎng)h除節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)標(biāo)識(shí);所述鏈表管理模塊對鏈表進(jìn)行處理為查找節(jié)點(diǎn)刪除參數(shù)中鏈表ID對應(yīng)的鏈表,調(diào)用信號(hào)量占有接口,占有所述 鏈表的信號(hào)量;在所述鏈表中查找需要?jiǎng)h除的節(jié)點(diǎn);調(diào)用內(nèi)存回收接口刪除所述需要?jiǎng)h除的節(jié)點(diǎn),并向客戶程序返回刪除成功 消息,調(diào)用信號(hào)量釋放接口,釋放所述鏈表的信號(hào)量。
10、 根據(jù)權(quán)利要求9所述的鏈表管理方法,其特征在于,所述刪除需要?jiǎng)h除的節(jié)點(diǎn)為需要?jiǎng)h除的節(jié)點(diǎn)不是頭節(jié)點(diǎn)或者尾節(jié)點(diǎn),將所述需要?jiǎng)h除的節(jié)點(diǎn)前面的節(jié)點(diǎn)和后面的節(jié)點(diǎn)的指針連接起來,再調(diào)用內(nèi)存回收接口回收需要?jiǎng)h除的節(jié)點(diǎn)對應(yīng)的內(nèi)存;需要?jiǎng)h除的節(jié)點(diǎn)是頭節(jié)點(diǎn)或者尾節(jié)點(diǎn),直接回收所述需要 刪除的節(jié)點(diǎn)對應(yīng)的內(nèi)存。
全文摘要
本發(fā)明公開一種基于結(jié)構(gòu)化語言的鏈表管理系統(tǒng),包括環(huán)境模塊、鏈表管理模塊、存儲(chǔ)模塊,其中,環(huán)境模塊在操作系統(tǒng)啟動(dòng)時(shí),確定與鏈表處理相關(guān)的接口;鏈表管理模塊根據(jù)來自客戶程序的鏈表處理請求,調(diào)用環(huán)境模塊中的接口和/或存儲(chǔ)模塊中的比較接口,對存儲(chǔ)模塊中存儲(chǔ)的鏈表進(jìn)行處理。本發(fā)明還相應(yīng)地公開一種基于結(jié)構(gòu)化語言的鏈表管理方法,采用本發(fā)明,在不同項(xiàng)目中,通過調(diào)用相應(yīng)的接口,便可按照設(shè)定的處理流程實(shí)現(xiàn)鏈表管理,不需要分別編寫代碼實(shí)現(xiàn)鏈表管理,從而能夠明顯簡化代碼、提高代碼可維護(hù)性和擴(kuò)展性,從而提高軟件開發(fā)效率。
文檔編號(hào)G06F12/02GK101582031SQ20091014912
公開日2009年11月18日 申請日期2009年6月16日 優(yōu)先權(quán)日2009年6月16日
發(fā)明者曹登元 申請人:中興通訊股份有限公司