狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

用VB完成雙向循環鏈表

用VB完成雙向循環鏈表

更新時間:2024-04-08 文章作者:未知 信息來源:網絡 閱讀次數:

作者:zgl
郵箱:yoshiro_gl@21cn.com

  發現大多數人對VB中應用指針不太了解,作一些說明。
  VB的指針挺簡單的,用著也很方便,其實對象變量就可以看成是指針,當你用Set A=Obj時,A就是指向Obj的地址。不用API就可以,當然用API可以實現更為高級的結構。
  給一個例子,一個用VB實現的雙向循環鏈表。有鏈表的生成,刪除和結點的插入。
  先定義一個結點類,類名為Node,代碼為:

Option Explicit
Public pNext As Node
Public pPrev As Node
Public data As Single

Private Sub Class_Initialize()
  Set pNext = Nothing
  Set pPrev = Nothing
End Sub

Private Sub Class_Terminate()
  Set pNext = Nothing
  Set pPrev = Nothing
End Sub

再添加一個窗體,窗體上添加兩個列表框,list1和list2,窗體的代碼為:

Option Explicit
Private pHead As Object
Private pV As Object

Private Sub Form_Load()
Dim i As Integer
  Set pHead = New Node
  Call CreateLinkList
  Call InsertNode(pHead, 503)
  Call InsertNode(pHead, 1.875)
  Call InsertNode(pHead, -3.675)
  For i = 1 To 100
    Call InsertNode(pHead, -1 * i)
  Next
  Call PrintList
  Call DeleteList
End Sub

Public Sub CreateLinkList()
Dim p As Node
Dim nLoop As Integer
Static pLast As Node
pHead.data = 0
Set pLast = pHead
For nLoop = 1 To 501
  Set p = New Node
  p.data = nLoop
  Set pLast.pNext = p
  Set p.pPrev = pLast
  Set pLast = p
Next
Set pLast = Nothing
Set p.pNext = pHead
Set pHead.pPrev = p
Exit Sub
End Sub

Public Sub PrintList()
List1.AddItem "Forwards"
Set pV = pHead
Do
  List1.AddItem pV.data
  Set pV = pV.pNext
Loop While Not pV Is pHead

List2.AddItem "Backwards"
Set pV = pHead.pPrev
Do
  List2.AddItem pV.data
  Set pV = pV.pPrev
Loop While Not pV Is pHead.pPrev
End Sub

Public Sub DeleteList()
Dim p As Node
Set pV = pHead
Do
  Set pV = pV.pNext
  Set p = pV.pPrev
  If Not p Is Nothing Then
    Set p.pNext = Nothing
    Set p.pPrev = Nothing
  End If
  Set p = Nothing
Loop While Not pV.pNext Is Nothing
Set pV = Nothing
Set pHead = Nothing
End Sub

Public Sub InsertNode(head As Node, data As Single)
Dim p As New Node, q As Node, prev As Node
p.data = data
Set q = head
Set prev = head.pPrev
While ((q.data < p.data) And Not q.pNext Is head)
  Set q = q.pNext
  Set prev = prev.pNext
Wend
If Not q.pNext Is head Then
  Set p.pNext = q
  Set p.pPrev = prev
  Set prev.pNext = p
  Set q.pPrev = p
  If q Is head Then
    Set head = p
  End If
Else
  Set p.pNext = head
  Set p.pPrev = q
  Set head.pPrev = p
  Set q.pNext = p
End If
End Sub

  一個雙向循環鏈表就形成了,List1中是正向遍歷的結果,List2中是反向遍歷的結果。類的構造器Class_Initialize()過程,類的析構Class_Termainate()過程,結點內存的分配和回收都由類自身完成,還有多態,pHead As Object;Set pHead = New Node;Set pHead.pPrev = p;指向基類的指針指向了子類,并調用了子類的屬性,是不是挺像C++的代碼?

鏈表有了,二叉樹,由臨接表構成的圖等數據結構都很容易實現了吧,實際上用VB能構造很復雜的數據結構,上面的代碼只是簡單的示例,實際可以做的更完善。

  另外,VB6也能夠生成真實的地址。三種未正式公布的VBA方法VarPtr,ObjPtr,和StrPtr(實際上是指向運行DLL同一入口的三個不同的類型庫別名)就可以用來建立指針,使用address=ObjPtr(Obj)就可以獲得對象的地址,Obj為需要地址的對象,而Address為一個long型變量,其中放置了對象的地址,使用VarPtr(產生變量的地址和UDT),StrPtr(產生字符串的地址)和ObjPtr(產生對象的地址)可以構造真實的,非常復雜的數據結構。
  上面三個方法并沒有在Microsoft的正式文檔資料中公布(包括MSDN),但查看VB6的基本動態運行庫MSVBVM60.DLL可以發現這三個方法:

[entry(0x60000006),hidden]
long __stdcall VarPtr([in]void* Ptr);
[entry(0x60000007),hidden]
long __stdcall StrPtr([in]BSTR Ptr);
[entry(0x60000008),hidden]
long __stdcall ObjPtr([in]IUnknown* Ptr);

  類似這樣的隱藏方法還有不少,實際上VB6的功能是相當強大的,但大家又真正了解VB6多少呢?

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
精品一区二区三区影院在线午夜| 韩国v欧美v亚洲v日本v| 久久麻豆一区二区| 精品国免费一区二区三区| 欧美一区二区三区四区在线观看| 欧美亚洲综合网| 精品视频1区2区3区| 在线精品视频免费播放| 欧美视频在线播放| 337p亚洲精品色噜噜噜| 日韩精品最新网址| 久久精品视频免费观看| 国产精品女人毛片| 一区二区三区在线视频观看| 夜夜爽夜夜爽精品视频| 日本中文字幕不卡| 国产一区二区不卡在线| 波波电影院一区二区三区| 欧美二区视频| 在线一区欧美| 色天天综合色天天久久| 67194成人在线观看| 国产校园另类小说区| 国产精品久久久久久户外露出| 一区二区三区欧美视频| 免费人成精品欧美精品| 成人黄色大片在线观看| 亚洲国产精品第一区二区三区| 久久国产精品久久精品国产| 欧美日韩精品福利| 久久久亚洲精品一区二区三区| 国产精品久久久久婷婷二区次| 午夜欧美视频在线观看| 国产成人午夜精品5599| 在线欧美亚洲| 精品视频1区2区3区| 国产日韩精品一区二区三区 | 亚洲婷婷在线视频| 免费成人结看片| 成人一区二区三区在线观看| 在线观看视频免费一区二区三区| 欧美日韩专区在线| 国产精品色一区二区三区| 日本va欧美va瓶| 牛人盗摄一区二区三区视频| 91久久精品一区二区二区| 国产亚洲欧美日韩日本| 男人的j进女人的j一区| 欧美精品一区在线发布| 欧美三电影在线| 亚洲欧美影音先锋| 国产成人综合亚洲网站| 国产欧美丝祙| 久久亚洲一级片| 日本不卡一区二区| 欧美激情综合| 欧美电影在哪看比较好| 亚洲精品视频在线观看网站| 成人一区二区三区| 欧美在线free| 亚洲资源中文字幕| 欧美人与禽性xxxxx杂性| 欧美日韩一区二区三区在线| 一区二区三区在线观看国产| 99久久久国产精品免费蜜臀| 欧美体内she精高潮| 一区二区三区四区高清精品免费观看 | 亚洲国产婷婷香蕉久久久久久99| 91精品黄色片免费大全| 亚洲制服丝袜av| 欧美一区2区三区4区公司二百| 欧美性色黄大片| 亚洲国产日韩在线一区模特| 亚洲特色特黄| 国产清纯白嫩初高生在线观看91 | 欧美高清在线一区二区| 国产91色综合久久免费分享| 在线观看国产日韩| 亚洲香蕉伊在人在线观| 国内精品久久久久久久果冻传媒| 久久综合九色综合97婷婷| 国产在线国偷精品产拍免费yy| 鲁大师成人一区二区三区 | 欧美福利网址| 精品日本一线二线三线不卡| 国内外精品视频| 91九色02白丝porn| 视频一区国产视频| 亚洲伊人观看| 亚洲一区二区精品3399| 国产欧美日韩亚洲| 亚洲欧美日韩国产手机在线| 国产精品高清一区二区三区| 国产日韩在线不卡| 93久久精品日日躁夜夜躁欧美| 日韩精品资源二区在线| 国产成人啪午夜精品网站男同| 欧美日韩日日夜夜| 精品一区二区三区日韩| 欧美日韩精品系列| 国产精品一区二区黑丝| 日韩女优制服丝袜电影| 成人app在线观看| 久久天天做天天爱综合色| gogo大胆日本视频一区| 久久这里只有精品6| 欧美伊人影院| 中文字幕在线不卡国产视频| 日韩视频在线观看国产| 亚洲综合免费观看高清在线观看| 亚洲免费影院| 精品一区二区免费在线观看| 91精品国产色综合久久| 成人午夜精品在线| 久久精品在这里| 亚洲精品四区| 天堂蜜桃一区二区三区| 欧美三级欧美一级| 不卡的av电影| 亚洲日本护士毛茸茸| 免费永久网站黄欧美| 麻豆免费看一区二区三区| 日韩欧美不卡一区| 欧美日韩一区二区视频在线| 一区二区三区欧美日韩| 欧美午夜寂寞影院| yourporn久久国产精品| 中文字幕在线一区| 久久久久久久久久久一区| 国产精品亚洲第一| 亚洲国产高清aⅴ视频| 国产精品推荐精品| 国产九色精品成人porny| 国产精品久久久久久亚洲伦| 色婷婷综合视频在线观看| 国产成人h网站| 亚洲免费大片在线观看| 欧美日韩色一区| 午夜国产精品视频| 日韩av一区二| 日韩电影免费一区| 制服丝袜亚洲色图| 亚洲小说欧美另类社区| 美女国产一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 国产精品美女| av成人老司机| 日韩精品电影一区亚洲| 久久久蜜桃精品| 一本大道综合伊人精品热热| 99九九99九九九视频精品| 日韩精品亚洲一区| 国产欧美精品一区二区三区四区| 色婷婷综合久久久中文一区二区 | 精品久久五月天| 免费久久99精品国产自| 91蜜桃传媒精品久久久一区二区| 亚洲成人av一区二区| 久久久久久麻豆| 欧美丝袜自拍制服另类| 一区一区视频| 成人app在线| 久久精品国产77777蜜臀| 国产精品久久看| 欧美电视剧免费全集观看| 久久精品国产清高在天天线 | 欧美大片一区| 国产成人精品一区二| 亚洲国产精品影院| 国产精品久久久久久久久搜平片| 欧美一区二区三区婷婷月色| 国产精品色网| 国产一区二区无遮挡| 成人av资源在线观看| 六月丁香综合在线视频| 香蕉影视欧美成人| 亚洲欧洲精品一区二区三区 | 亚洲成人tv网| 成人欧美一区二区三区1314| 精品国产一区二区精华| 欧美日韩aaa| 在线观看日韩电影| 久久久国产亚洲精品| 黄色成人av网站| 欧美日本亚洲| 欧美 日韩 国产在线| www.av亚洲| 国产aⅴ精品一区二区三区色成熟| 奇米影视一区二区三区小说| 午夜精品久久久久久久久久| 亚洲六月丁香色婷婷综合久久 | 欧美午夜一区| 96av麻豆蜜桃一区二区| 99精品欧美一区二区三区小说 | 亚洲精品日韩在线观看| 亚洲高清视频在线观看| 亚洲高清网站| 亚洲欧洲日本国产| 一本久久综合| 久久国产高清|