【摘要】在當(dāng)前我國(guó)的計(jì)算機(jī)技術(shù)得到迅速發(fā)展過(guò)程中,在軟件的設(shè)計(jì)開(kāi)發(fā)領(lǐng)域也有了很大幅度的進(jìn)步,其中在數(shù)據(jù)結(jié)構(gòu)可視化方面是軟件可視化的一個(gè)重要分支領(lǐng)域,在數(shù)據(jù)結(jié)構(gòu)和算法的方面上最為艱難的就是其抽象性以及動(dòng)態(tài)性,在獲取的數(shù)據(jù)手段的逐漸增多的發(fā)展下,一些大規(guī)模的科學(xué)研究對(duì)數(shù)據(jù)量的處理也隨之增多。本文主要就數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的設(shè)計(jì)以及實(shí)現(xiàn)進(jìn)行分析探究,希望能夠通過(guò)此次的研究對(duì)實(shí)際起到一定的指導(dǎo)作用。
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu);可視化;設(shè)計(jì)
引言
在我國(guó)的科學(xué)技術(shù)得到迅速發(fā)展的過(guò)程中,科學(xué)計(jì)算的工作量也開(kāi)始變得愈來(lái)愈大,可視化的方法能夠有效的幫助工作人員進(jìn)行獲取更多的信息,從而更為直觀(guān)的來(lái)對(duì)計(jì)算的結(jié)果進(jìn)行分析。由于受到計(jì)算機(jī)性能以及軟件平臺(tái)限制,在最初的可視化軟件系統(tǒng)方面都是在高性能圖形工作站進(jìn)行發(fā)展的,對(duì)數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的設(shè)計(jì)能夠有效的將效率得到提高。
1.數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)設(shè)計(jì)的重要性及目的
1.1數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)設(shè)計(jì)的重要性。在使用以及學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計(jì)過(guò)程中,實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的可視化能夠有效的提高對(duì)數(shù)據(jù)結(jié)構(gòu)的直觀(guān)分析,從而加深理解。在對(duì)程序進(jìn)行調(diào)試的過(guò)程中,通過(guò)數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)能夠有效的將編程的效率得以提高[1]。從目前的發(fā)展情況來(lái)看,已經(jīng)有了諸多的應(yīng)用廣泛的可視化集成開(kāi)發(fā)環(huán)境,其中最為常見(jiàn)的就是Visual C++等,這些可視化的集成開(kāi)發(fā)環(huán)境簡(jiǎn)化了程序界面的設(shè)計(jì),對(duì)編寫(xiě)界面的程序降低了難度,從而有效的提高了軟件的開(kāi)發(fā)效率。
1.2數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)設(shè)計(jì)的目的。在數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)設(shè)計(jì)的目的上就是使得JVDSCL能夠比較容易的在不同用途中進(jìn)行應(yīng)用,這就是要加強(qiáng)其靈活性,JVDSCL能夠直接的應(yīng)用到軟件應(yīng)用程序的開(kāi)發(fā)方面,在開(kāi)發(fā)人員方面也能夠通過(guò)JVDSCL來(lái)進(jìn)行對(duì)新的數(shù)據(jù)結(jié)構(gòu)進(jìn)行構(gòu)造,另外就是加強(qiáng)其可靠性的目的,在這一方面是JVDSCL的最為主要的目的,還有就是面向?qū)ο蟮哪康?,?shù)據(jù)結(jié)構(gòu)是JVDSCL的主要對(duì)象,同時(shí)算法也是對(duì)象,它們保存運(yùn)行的結(jié)果以及提供訪(fǎng)問(wèn)結(jié)果的接口[2]。
2.數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的設(shè)計(jì)和實(shí)現(xiàn)探究
2.1數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的設(shè)計(jì)探究。在對(duì)數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)進(jìn)行設(shè)計(jì)的過(guò)程中,要對(duì)問(wèn)題進(jìn)行綜合性的考慮,其中在JVDSCL方面它主要是在Java集合庫(kù)基礎(chǔ)上來(lái)進(jìn)行對(duì)原有的數(shù)據(jù)結(jié)構(gòu)類(lèi)中進(jìn)行的擴(kuò)展,與此同時(shí)也在這一過(guò)程中添加了相應(yīng)的較為復(fù)雜化的數(shù)據(jù)結(jié)構(gòu),最為常見(jiàn)的就是樹(shù)圖。在JVDSCL過(guò)程中對(duì)可視化數(shù)據(jù)結(jié)構(gòu)進(jìn)行構(gòu)造來(lái)實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的可視化,而這一可視化的數(shù)據(jù)結(jié)構(gòu)也是在Java集合庫(kù)當(dāng)中的原有數(shù)據(jù)結(jié)構(gòu)類(lèi)的操作基礎(chǔ)上進(jìn)行的,另外就是增添了一些可視屬性以及對(duì)可視化的接口進(jìn)行了提供。在每種數(shù)據(jù)結(jié)構(gòu)都會(huì)有著多種顯示的模式,這就需要開(kāi)發(fā)人員進(jìn)行有機(jī)的選擇,而在JVDSCL當(dāng)中,對(duì)于每種數(shù)據(jù)結(jié)構(gòu)會(huì)有這多種布局的方法來(lái)對(duì)其加以布局。
在對(duì)數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)進(jìn)行設(shè)計(jì)的內(nèi)容上主要就是基本的可視化接口的設(shè)計(jì)以及顯示模式和布局方法。其中在可視化接口的設(shè)計(jì)方面,最為主要的接口就是V Collection接口,它不僅是能夠提供Collection接口的基本方法,同時(shí)也提供可視化接口,在這一內(nèi)容上主要有 void draw,操作上就是重畫(huà)指定的數(shù)據(jù)結(jié)構(gòu),通過(guò)display Mode參數(shù)值來(lái)決定選用的顯示模式,在這一接口中的參數(shù)c是表示數(shù)據(jù)結(jié)構(gòu)所顯示的顏色[3]。在顯示模式的設(shè)計(jì)當(dāng)中,JVDSCL的每種數(shù)據(jù)結(jié)構(gòu)都會(huì)有不相同的顯示模式,如下圖所表示的兩種模式。
另外,在布局的設(shè)計(jì)上,關(guān)于數(shù)據(jù)結(jié)構(gòu)可視化的關(guān)鍵問(wèn)題就是圖形的布局問(wèn)題,這對(duì)于相關(guān)的研究人員對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的效果理解有著非常密切的關(guān)系。而在JVDSCL當(dāng)中的最為主要的就是線(xiàn)性布局的方法以及圖布局的方法,針對(duì)于每種不同的布局在算法的實(shí)現(xiàn)上也是不同的[4]。其中在線(xiàn)性的布局方面,主要是能夠適用于隊(duì)列和線(xiàn)性表的數(shù)據(jù)結(jié)構(gòu),在對(duì)線(xiàn)性的布局方法上其基本的算法框架就是獲取數(shù)據(jù)的元素個(gè)數(shù)以及依靠著所顯示大小和數(shù)據(jù)元素個(gè)數(shù)進(jìn)行對(duì)布局的大小值進(jìn)行計(jì)算。如下圖所示。
在圖布局的設(shè)計(jì)方面在算法上是屬于二維彈性模型的算法,最為基本的思想就是在二維平面上進(jìn)行計(jì)算。這一方法比較的適合圖等數(shù)據(jù)結(jié)構(gòu),在JVDSCL當(dāng)中能夠提供的多種算法實(shí)現(xiàn)圖的可視化,其中有基于遺傳模擬退火算法圖的三維可視化以及以上所說(shuō)的二維彈性模擬算法等。可視化技術(shù)的主要目的就是來(lái)輔助人們?cè)鰪?qiáng)認(rèn)知上的能力,而在計(jì)算機(jī)的可視化技術(shù)方面能夠?qū)⑵渥鳛槭切畔⒌奶幚砉ぞ?,以此?lái)考慮多樣化的樣本以及變量和聯(lián)系。
另外,對(duì)于只描述節(jié)點(diǎn)間的關(guān)系的數(shù)據(jù)可以通過(guò)樹(shù)布局的方法進(jìn)行確定樹(shù)節(jié)點(diǎn)的坐標(biāo),其最基本的方法就是若樹(shù)非空后跟遍歷樹(shù),在這一方法上主要就是先設(shè)置整棵樹(shù)的最左下的結(jié)點(diǎn)位置,從左到右要進(jìn)行依次遍歷結(jié)點(diǎn)的每棵子樹(shù)然后再返回子樹(shù)的結(jié)點(diǎn)位置進(jìn)行設(shè)定下一棵子樹(shù)最左結(jié)點(diǎn)的位置。主要就是要能夠滿(mǎn)足所有的樹(shù)節(jié)點(diǎn)不相交不重合,要能夠等距排列,還有就是所有的葉子節(jié)點(diǎn)相對(duì)于根節(jié)點(diǎn)要成等要排列。
2.2數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的實(shí)現(xiàn)分析。在數(shù)據(jù)結(jié)構(gòu)的可視化類(lèi)庫(kù)的實(shí)現(xiàn)方面由于本論文的篇幅有限簡(jiǎn)要進(jìn)行講述,數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)演示系統(tǒng)演示了各種不同算法的數(shù)據(jù)結(jié)構(gòu)變化的過(guò)程,這還需要相關(guān)的設(shè)計(jì)人員在大量的畫(huà)圖操作上得以實(shí)現(xiàn),比如對(duì)鏈表的結(jié)點(diǎn)的繪制,對(duì)于JVDSCL的應(yīng)用就不需要自己來(lái)編碼就能夠?qū)崿F(xiàn)畫(huà)圖的操作,在動(dòng)態(tài)演示系統(tǒng)方面有了很大程度上的層次性提高,在這一過(guò)程中設(shè)計(jì)人員不需對(duì)數(shù)據(jù)結(jié)構(gòu)的布局進(jìn)行考慮,在JVDSCL自身已經(jīng)有了布局的功能,只需要根據(jù)自身的的需要來(lái)進(jìn)行重寫(xiě)即可實(shí)現(xiàn)。另外,在對(duì)數(shù)據(jù)結(jié)構(gòu)中的draw()進(jìn)行調(diào)用也能夠有效的實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的可視化。
3.結(jié)語(yǔ)
總而言之,對(duì)于數(shù)據(jù)結(jié)構(gòu)的可視化類(lèi)庫(kù)的設(shè)計(jì)以及實(shí)現(xiàn)能夠有效的將軟件的重用性和擴(kuò)展性得到提高,在JVDSCL的基礎(chǔ)上進(jìn)行對(duì)其加以設(shè)計(jì),對(duì)軟件的開(kāi)發(fā)設(shè)計(jì)的效率有了明顯的提高,在未來(lái)我國(guó)的軟件技術(shù)設(shè)計(jì)水平不斷提升的過(guò)程中,也定能夠在這一領(lǐng)域取得更加優(yōu)異的設(shè)計(jì)成果。
參考文獻(xiàn)
[1]楊曉波,陳邦澤.數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)體系研究[J].實(shí)驗(yàn)技術(shù)與管理,2013,(08).
[2]馮月華.《數(shù)據(jù)結(jié)構(gòu)》課程改革下的一堂教學(xué)實(shí)例——最小生成樹(shù)[J].隴東學(xué)院學(xué)報(bào),2014,(03).
[3]張建嬌.計(jì)算機(jī)軟件基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)之算法分析[J].無(wú)線(xiàn)互聯(lián)科技,2013,(10).
[4]牛小飛,李盛恩,張冬梅,宋玲,湯曉兵.關(guān)于數(shù)據(jù)結(jié)構(gòu)中遞歸的教學(xué)探討[J].山東建筑大學(xué)學(xué)報(bào),2011,(06).