專利名稱:一種基于鏈表的pqdif文件樹形結(jié)構(gòu)比較方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電能質(zhì)量領(lǐng)域,特別涉及一種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法。
背景技術(shù):
PQDIF是電能質(zhì)量數(shù)據(jù)的國際標(biāo)準(zhǔn)數(shù)據(jù)格式,由于設(shè)備制造商技術(shù)水平差異,相關(guān)設(shè)備提供的PQDIF格式不盡相同,所以要用規(guī)范的PQDIF數(shù)據(jù)包與之比較,指出其中的差異,以便設(shè)備制造商整改。由于PQDIF是樹形結(jié)構(gòu)要區(qū)分父、子節(jié)點(diǎn),同時還要區(qū)分具體通道,難以進(jìn)行快速的比較
發(fā)明內(nèi)容
發(fā)明目的針對上述現(xiàn)有技術(shù)存在的問題和不足,本發(fā)明的目的是提供一種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,降低了 PQDIF文件樹形結(jié)構(gòu)的復(fù)雜性,容易實(shí)現(xiàn)。技術(shù)方案為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案為ー種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,包括如下步驟(I)分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中的節(jié)點(diǎn)名稱,建立節(jié)點(diǎn)名稱詞典數(shù)組N,所述節(jié)點(diǎn)名稱詞典數(shù)組中的節(jié)點(diǎn)名稱各不相同,PQDIF文件A為標(biāo)準(zhǔn)PQDIF文件,PQDIF文件B為被檢查PQDIF文件;(2)分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中定義通道名稱的節(jié)點(diǎn),建立通道名稱詞典數(shù)組M,所述通道名稱詞典數(shù)組中的通道名稱各不相同;(3)分別建立PQDIF文件A和PQDIF文件B的節(jié)點(diǎn)鏈表La和Lb ;(4)依次從La中取鏈表元素Xk,查找Lb中是否存在Xk,如果Lb中存在Xk,則分別從La和Lb中移除Xk,其中k=l,2,…,K,K為鏈表元素的總數(shù);(5) La中剰余的鏈表元素即為Lb中缺少的鏈表元素,Lb中剰余的鏈表元素即為Lb中多余的鏈表元素。進(jìn)ー步地,所述步驟(3)中,通過分別遍歷PQDIF文件A和PQDIF文件B,將節(jié)點(diǎn)名稱對應(yīng)的節(jié)點(diǎn)名稱詞典數(shù)組N的腳標(biāo)i和通道名稱詞典數(shù)組M的腳標(biāo)j,計(jì)算Xk=i*1000+j,將Xk作為鏈表元素分別添加到節(jié)點(diǎn)鏈表La和Lb中,其中k=l,2,…,K,K為鏈表元素的總數(shù)。進(jìn)ー步地,還包括步驟(6):將La中剰余的鏈表元素和Lb中剰余的鏈表元素均進(jìn)行除以1000和模1000,得到對應(yīng)的節(jié)點(diǎn)名稱和通道名稱。有益效果本發(fā)明基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,回避了 PQDIF樹形結(jié)構(gòu)父、子節(jié)點(diǎn)的復(fù)雜性,容易實(shí)現(xiàn),能快速完成PQDIF文件間的比較。
圖I為本發(fā)明的邏輯框圖2為本發(fā)明舉例PQDIFA文件的樹形結(jié)構(gòu)圖;圖3為本發(fā)明舉例PQDIFB文件的樹形結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例,進(jìn)ー步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。如圖I所示,分別遍歷PQDIF文件A、B樹形結(jié)構(gòu)生成唯一節(jié)點(diǎn)名稱詞典數(shù)組N和通道名稱詞典數(shù)組M,建立PQDIF文件A、B的節(jié)點(diǎn)鏈表La、Lb,約減La、Lb相同的鏈表元素,將La中的鏈表元素對照N、M得到B相對于A缺少的節(jié)點(diǎn);將Lb中的鏈表元素對照N、M得至IJ B相對于A多余的節(jié)點(diǎn)。 具體步驟如下(I)依次遍歷PQDIF文件A、B樹形結(jié)構(gòu),建立統(tǒng)ー的節(jié)點(diǎn)名稱詞典數(shù)組N ;圖2為本發(fā)明舉例PQDIFA文件的樹形結(jié)構(gòu)圖,圖3為本發(fā)明舉例PQDIFB文件的樹形結(jié)構(gòu)圖,表I為本發(fā)明舉例PQDIFA文件、PQDIFB文件掃描生成的節(jié)點(diǎn)名稱詞典數(shù)組N ;可見,圖表中tag*表示節(jié)點(diǎn),圖2和圖3展現(xiàn)出了若干父子節(jié)點(diǎn)的復(fù)雜關(guān)系,節(jié)點(diǎn)后是相應(yīng)節(jié)點(diǎn)的值,從表I可以看出,左側(cè)所示為各個節(jié)點(diǎn)的名稱,右側(cè)所示為各個節(jié)點(diǎn)的腳標(biāo)(序號),本實(shí)施例將空節(jié)點(diǎn)的腳標(biāo)(序號)設(shè)為0,除了空節(jié)點(diǎn)外共有30個節(jié)點(diǎn)。表I
權(quán)利要求
1.一種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,包括如下步驟 (O分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中的節(jié)點(diǎn)名稱,建立節(jié)點(diǎn)名稱詞典數(shù)組N,所述節(jié)點(diǎn)名稱詞典數(shù)組中的節(jié)點(diǎn)名稱各不相同,PQDIF文件A為標(biāo)準(zhǔn)PQDIF文件,PQDIF文件B為被檢查PQDIF文件; (2)分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中定義通道名稱的節(jié)點(diǎn),建立通道名稱詞典數(shù)組M,所述通道名稱詞典數(shù)組中的通道名稱各不相同; (3)分別建立PQDIF文件A和PQDIF文件B的節(jié)點(diǎn)鏈表La和Lb; (4)依次從La中取鏈表元素Xk,查找Lb中是否存在Xk,如果Lb中存在Xk,則分別從La和Lb中移除Xk,其中k=l,2,…,K,K為鏈表元素的總數(shù); (5)La中剰余的鏈表元素即為Lb中缺少的鏈表元素,Lb中剰余的鏈表元素即為Lb中多余的鏈表元素。
2.根據(jù)權(quán)利要求I所述ー種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,其特征在于所述步驟(3)中,通過分別遍歷PQDIF文件A和PQDIF文件B,將節(jié)點(diǎn)名稱對應(yīng)的節(jié)點(diǎn)名稱詞典數(shù)組N的腳標(biāo)i和通道名稱詞典數(shù)組M的腳標(biāo)j,計(jì)算Xk=i*1000+j,將Xk作為鏈表元素分別添加到節(jié)點(diǎn)鏈表La和Lb中,其中k=l,2,…,K,K為鏈表元素的總數(shù)。
3.根據(jù)權(quán)利要求2所述ー種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,其特征在于還包括步驟(6):將La中剰余的鏈表元素和Lb中剰余的鏈表元素均進(jìn)行除以1000和?!?000,得到對應(yīng)的節(jié)點(diǎn)名稱和通道名稱。
全文摘要
本發(fā)明公開了一種基于鏈表的PQDIF文件樹形結(jié)構(gòu)比較方法,包括如下步驟分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中的節(jié)點(diǎn)名稱,建立節(jié)點(diǎn)名稱詞典數(shù)組N;分別遍歷PQDIF文件A和PQDIF文件B的樹形結(jié)構(gòu)中定義通道名稱的節(jié)點(diǎn),建立通道名稱詞典數(shù)組M;分別建立PQDIF文件A和PQDIF文件B的節(jié)點(diǎn)鏈表La和Lb;依次從La中取鏈表元素Xk,查找Lb中是否存在Xk,如果Lb中存在Xk,則分別從La和Lb中移除Xk;La中剩余的鏈表元素即為Lb中缺少的鏈表元素,Lb中剩余的鏈表元素即為Lb中多余的鏈表元素。本發(fā)明降低了PQDIF文件樹形結(jié)構(gòu)的復(fù)雜性,容易實(shí)現(xiàn)。
文檔編號G06F17/30GK102681975SQ20121014510
公開日2012年9月19日 申請日期2012年5月10日 優(yōu)先權(quán)日2012年5月10日
發(fā)明者袁曉冬 申請人:江蘇省電力公司電力科學(xué)研究院