下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VB的類模塊及其在鏈表數(shù)據(jù)結(jié)構(gòu)中的應(yīng)用 VB的類模塊及其在鏈表數(shù)據(jù)結(jié)構(gòu)中的應(yīng)用摘要:VB6中的類模塊是VB面向?qū)ο蟪绦蛟O(shè)計的一種新技術(shù)。它的屬性和方法可定義,已基本具備了類的特征。利用類模塊進行程序設(shè)計可實現(xiàn)代碼復(fù)用,使程序設(shè)計結(jié)構(gòu)化、簡潔化。關(guān)鍵詞:VB;類模塊;鏈表;類模塊;數(shù)據(jù)結(jié)構(gòu)引言當(dāng)前面向?qū)ο蠓椒ㄒ殉蔀槌绦蜷_發(fā)的主流技術(shù),而VB6中提供了類模塊結(jié)構(gòu),使開發(fā)者可將很多常用的操作進行合理的封裝,以實現(xiàn)代碼復(fù)用和程序結(jié)構(gòu)化。類模塊中的代碼描述了通過該類創(chuàng)建的對象特性和行為。雖然VB類模塊并非真正意
2、義上的對象,但其可定義屬性和方法,已基本具備了類的特征。本文將通過VB類模塊在數(shù)據(jù)結(jié)構(gòu)中的應(yīng)用,來探討數(shù)據(jù)結(jié)構(gòu)中鏈表的另一種實現(xiàn)方法。一. 使用類模塊的優(yōu)點應(yīng)用程序的本質(zhì)結(jié)構(gòu)即組織指令的方法,這些方法代表指令存放的位置的執(zhí)行順序。復(fù)雜的應(yīng)用程序?qū)M織或結(jié)構(gòu)的要求非常高,因此除對程序的執(zhí)行進行控制外,還需要對結(jié)構(gòu)進一步優(yōu)化。由于VB程序基于對象,因此代碼結(jié)構(gòu)可理解為程序常用物理表示的模型。開發(fā)者可將與窗體或無關(guān)的代碼放入標(biāo)準(zhǔn)模塊(擴展名為BAS)中,以實現(xiàn)代碼復(fù)用,而類模塊既包含代碼又包含數(shù)據(jù)類模塊(擴展名為CLS)是用于創(chuàng)建對象的更好解決方案。二. 類模塊和標(biāo)準(zhǔn)模塊的區(qū)別為
3、更好地理解類模塊,將類模塊和標(biāo)準(zhǔn)模塊進行比較,具體如下所述:1.標(biāo)準(zhǔn)模塊數(shù)據(jù)僅有一個備份,如公共變量值改變后,程序中再次讀取該變量,將得到同一個值,而類模塊數(shù)據(jù)則相對于類實例獨立存在。2.標(biāo)準(zhǔn)模塊數(shù)據(jù)在程序作用域內(nèi)存在,即存在于程序存活期,而類實例數(shù)據(jù)僅存在于對象存活期,其隨對象創(chuàng)建而創(chuàng)建,隨對象撤消而撤消。3.在標(biāo)準(zhǔn)模塊中聲明為Public型的變量在工程中均可訪問,而類模塊的Public型的變量,僅當(dāng)對象含有該實例的引用時才可訪問。三. 利用類模塊建立鏈表類的方法要建立一個鏈表,首先要明確組成鏈表的項目。在數(shù)據(jù)結(jié)構(gòu)中,線性鏈表的一個結(jié)點由兩部分組成,數(shù)據(jù)域和指針域,數(shù)據(jù)域存儲數(shù)據(jù)元
4、素的信息,指針域存儲直接后繼的位置。我們要建立的鏈表類的最基本單位是結(jié)點和后繼結(jié)點之間有相互聯(lián)系的機制,所以定義鏈表類本身用到兩個類模塊,下面我們將通過一個例子來說明利用類模塊建立鏈表類的方法。1.結(jié)點的建立可以通過“工程”菜單中的“添加類模塊”來建立一個名稱為Node結(jié)點,它是一個類模塊,它包含兩部分內(nèi)容:1.1結(jié)點的內(nèi)容。本例中是一個坐標(biāo)信息Public x As IintegerPublic y As Iinteger1.2后繼結(jié)點信息,通過它可對整個表中的結(jié)點進行鏈接Public NextNode As Node所以我們的結(jié)點類Node就建成了。2利用節(jié)點類構(gòu)造鏈表類List有了上面的
5、Node結(jié)點類,也就有了組成鏈表的基本單位,就可以構(gòu)造自己的鏈表了。為了方便,可以將鏈表的信息封裝起來,組成一個新的類模塊,名稱為List。首先在窗體上加一文本框,以用來放置鏈表的內(nèi)容,然后通過“工程”菜單中的“添加類模塊”來建立一個名稱為List類模塊。因為鏈表數(shù)據(jù)結(jié)構(gòu)的建立是為了方便使用的,為了保證其在操作過程的完整性,其內(nèi)容如下:2.1定義表頭和表尾Public ListHead As NodePublic ListTail As Node表頭和表尾是程序和鏈表進行交流的重要信息,它們也是結(jié)點類,各自具有節(jié)點的特點和自身的特點。2.2鏈表信息初始化使一張鏈表初始化,表頭也即表
6、尾,并且均為空的。Private Sub Class_Initialize()Set ListHead=Nothing ' 設(shè)置表頭為空Set ListTail =Nothing ' 設(shè)置表尾為空End Sub2.3建立新結(jié)點鏈表的結(jié)點需要我們一個一個去建立,將新的結(jié)點也就是Node類一個一個接入表中,接的方法就是通過對表頭指針和表尾指針的調(diào)
7、整。Sub MakeNode(n1 As Integer,n2 As Integer)Dim n As NodeSet n=New Noden.x=n1n.y=n2If ListHead Is Nothing ThenSet ListHead = n ' 若為空鏈表,則新加入的結(jié)點位頭結(jié)點ElseSet ListTail.NextNode = n ' 若鏈表不為空,則將新加入的結(jié)點置于表尾
8、End if Set ListTail = nSet ListTail.NextNode = NothingEnd Sub2.4顯示鏈表信息顯示鏈表的信息,我們通過一個循環(huán),將鏈表的信息顯示在窗體的文本框中。Sub DisplayList()Dim n As NodeSet n = ListHeadWhile Not n Is NothingForm1.Text1.Text = Form1.Text1.Text+"X:" + Str(n.X) + "Y:" + Str(n.Y) + vbCr + vbLfSet n =n. NextNodeWendEnd
9、 Sub2.5清空鏈表內(nèi)容清楚鏈表內(nèi)容,是通過從表頭開始逐個刪除結(jié)點來完成的。Private Sub Class_Terminate()ClearlistEnd SubSub Clearlist()Dim n As NodeWhile Not ListHead Is Nothing ' 若不為空鏈表,進行以下操作Set n = ListHeadSet ListHead = ListHead.NextNode &
10、#160; ' 將表頭下一個結(jié)點內(nèi)容置入表頭Set n = NothingWendEnd Sub2.6將一個表的內(nèi)容傳遞到另一個表鏈表是由結(jié)點連接而成的,所以要將一個表的內(nèi)容傳遞到另外一個表中只需要將表頭和表尾賦值給新的表頭和表尾即可。Sub TransferList(list2 As List)Set list2 = New ListSet list2.listHead = listHeadSet list2.ListTail = listTailSet listHead = NothingSet L
11、istTail = NothingEnd Sub2.7獲取當(dāng)前鏈表第一個結(jié)點信息,并將該結(jié)點清空Sub GetNode(column As Integer, row As Integer)Dim n As NodeIf Not ListHead Is Nothing Then Set n = ListHeadcolumn = n.Xrow = n.YSet ListHead = ListHead.NextN
12、odeEnd IfIf ListHead Is Nothing Then Set ListTail = NothingSet n = NothingEnd IfEnd Sub四. 利用鏈表類進行面向?qū)ο缶幊讨苯永蒙厦娼⒌逆湵眍怢ist,可以很簡單地完成上面已經(jīng)構(gòu)造的操作,當(dāng)然,在其中也可加入其他的方法。對于一個類,在使用它的過程中不必知道程序?qū)崿F(xiàn)的細節(jié)問題,只要了解類本身具有的方法就可以應(yīng)用了,不僅如此,還可以利用已有的類構(gòu)造新的類,實現(xiàn)代碼的可重用,List就是利用Node的基礎(chǔ)上實現(xiàn)的。下面的程序很簡單地實現(xiàn)了給鏈表添加10個結(jié)點,并將其內(nèi)容在文本框中顯示。通過鏈表類來編程源
13、程序變得非常簡潔。Private Sub CmdChain_Click()'通過鏈表類來構(gòu)造Dim TestList As ListDim i As IntegerForm1.ScaleMode = vbPlxelsForm1.AutoRedraw = TrueSet TestList = New ListText1.Text = ""For i = 1 To 10TestList.MakeNewNode i, i * 10Next iTestList.DispLayListEnd Sub當(dāng)然,我們在編程過程中也可以只通過結(jié)點來實現(xiàn)鏈表,當(dāng)然結(jié)點之間的關(guān)系在我們使用
14、起來時就應(yīng)該很明了,源程序如下:Private Sub CmdNodelist_Click( )'直接利用結(jié)點構(gòu)造鏈表Dim i As IntegerDim n As NodeDim ListHead As NodeDim ListTail As NodeText1.Text = ""For i = 1 To 10Set n = New Noden.X = in.Y = i * 10If ListHead Is Nothing ThenSet ListHesd = nElseSet ListTail.NextNode = nEnd IfSet ListTail = nSet ListTail.NextNode = NothingNext iWhile Not ListHead Is NothingSet ListHead = ListHead.NextNodeText1.Text = Text.Text + "X:" + Str(n.X) + "Y:" + Str(n.Y) + vbCr + vbLfSet n = NothingWendEnd Sub五. 結(jié)束語通過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《班組安全教育課程》課件
- 單位管理制度集粹選集【員工管理】十篇
- 單位管理制度合并選集【人力資源管理】十篇
- 七年級下《皇帝的新裝》蘇教版-課件
- 單位管理制度范例匯編【職員管理篇】十篇
- 《標(biāo)準(zhǔn)化裝修》課件
- 《項目管理手冊》附件1至附件123
- (高頻非選擇題25題)第1單元 中華人民共和國的成立和鞏固(解析版)
- 2019年高考語文試卷(新課標(biāo)Ⅰ卷)(解析卷)
- 2015年高考語文試卷(新課標(biāo)Ⅱ卷)(解析卷)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之14:“6策劃-6.3變更的策劃”(雷澤佳編制-2025B0)
- 2024年特厚板行業(yè)現(xiàn)狀分析:中國特厚板市場占總銷售量45.01%
- 2024版影視制作公司與演員經(jīng)紀(jì)公司合作協(xié)議3篇
- 2024年上海市初三語文二模試題匯編之記敘文閱讀
- 2024年度上海市嘉定區(qū)工業(yè)廠房買賣合同2篇
- 2023-2024學(xué)年廣東省廣州市海珠區(qū)九年級(上)期末化學(xué)試卷(含答案)
- 音樂老師年度總結(jié)5篇
- 自動控制理論(哈爾濱工程大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋哈爾濱工程大學(xué)
- 探索2024:財務(wù)報表分析專業(yè)培訓(xùn)資料
- 雙減背景下基于核心素養(yǎng)小學(xué)語文閱讀提升實踐研究結(jié)題報告
- SAP WM模塊前臺操作詳解(S4版本)
評論
0/150
提交評論