狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
欧美jizzhd精品欧美喷水| 中日韩在线视频| 国产精品911| 国产麻豆成人传媒免费观看| 精品一区在线看| 久久99久久精品| 激情综合亚洲精品| 国产伦精一区二区三区| 国产成人免费视频一区| 国产高清不卡二三区| 成人激情电影免费在线观看| 懂色av一区二区在线播放| 成人一道本在线| 97se亚洲国产综合自在线| av在线这里只有精品| 国产精品v欧美精品∨日韩| 在线欧美亚洲| 久久大逼视频| 555www色欧美视频| 久久亚洲综合色| 亚洲欧洲日产国产综合网| 亚洲精品国产无套在线观| 午夜视频久久久久久| 国产综合色精品一区二区三区| 国产精品亚洲第一| 色综合久久综合网欧美综合网| 黄色日韩在线| 久久九九精品| 欧美一区二区在线免费观看| 欧美激情综合在线| 亚洲成在人线免费| 国产一区二区福利| 欧美日韩午夜| 久久婷婷影院| 26uuu成人网一区二区三区| 亚洲图片激情小说| 另类欧美日韩国产在线| 91视频精品在这里| 久久xxxx精品视频| 日韩精品中文字幕在线不卡尤物| 久久久高清一区二区三区| 一区二区三区四区不卡视频| 国产综合色在线| 在线播放豆国产99亚洲| 欧美日本在线播放| 国产精品不卡视频| 精品在线亚洲视频| 亚洲国产精品第一区二区三区| 欧美亚洲愉拍一区二区| 亚洲国产精品t66y| 另类中文字幕网| 国内揄拍国内精品久久| 欧美体内she精视频| 国产精品国产三级国产三级人妇 | 精品视频一区二区三区免费| 日本一区二区三区视频视频| 日本午夜一区二区| 欧美日韩亚洲免费| 91精品视频网| 亚洲电影中文字幕在线观看| 波多野洁衣一区| 色嗨嗨av一区二区三区| 中文字幕中文字幕在线一区| 国产一区二三区好的| 亚洲欧美日本视频在线观看| 国产清纯白嫩初高生在线观看91| 捆绑紧缚一区二区三区视频| 一区二区久久| 欧美韩国日本不卡| 国产美女精品在线| 久久久久网站| 亚洲黄色片在线观看| 91丨porny丨中文| 91精品国产91久久久久久最新毛片 | 麻豆av一区二区三区| 亚洲国产经典视频| 成av人片一区二区| 欧美日韩电影一区| 午夜精品久久久久| 亚洲人成人一区二区三区| 国产网站一区二区| 成人免费福利片| 欧美日本在线视频| 免费在线观看一区| 美女主播一区| 亚洲国产精品久久久久秋霞影院| 国产综合视频| 国产欧美一区二区精品性色| 北条麻妃一区二区三区| 日韩视频永久免费| 国产一区二区三区黄视频 | 天天综合色天天| 麻豆9191精品国产| 性感美女极品91精品| 宅男噜噜噜66一区二区| 国产精品乱人伦中文| 欧美精品aa| 久久久久9999亚洲精品| 99视频超级精品| 2020国产精品自拍| 91视频你懂的| 国产精品三级电影| 尤妮丝一区二区裸体视频| 亚洲三级在线免费观看| 一区二区精品国产| 亚洲成人av一区| 色婷婷精品久久二区二区蜜臂av| 日本在线不卡一区| 欧美三级资源在线| 国产精品亚洲成人| 久久免费电影网| 欧美视频网站| 伊人一区二区三区| 久久婷婷丁香| 国产精品911| 国产午夜精品久久久久久免费视| 亚洲天堂久久| 午夜欧美在线一二页| 欧美亚洲国产一区二区三区va | 一区二区三区国产盗摄| 亚洲mv大片欧洲mv大片精品| 欧美影视一区在线| 成人三级伦理片| 中文字幕一区二区不卡| 久久不射2019中文字幕| 麻豆91精品91久久久的内涵| 欧美一级免费大片| 欧美在线首页| 亚洲高清视频的网址| 欧美精品v国产精品v日韩精品 | 免费一区视频| 国产麻豆精品一区二区| 国产区在线观看成人精品| 国产精品免费一区二区三区观看| 免费美女久久99| 欧美tk丨vk视频| 国产欧美激情| 国产精品综合网| 国产精品传媒视频| 欧美色国产精品| 欧美日韩福利| 麻豆精品新av中文字幕| 日韩精品一区二区三区swag| 一本久久综合| 国产福利一区二区三区视频 | 懂色av一区二区夜夜嗨| 综合色中文字幕| 欧美老年两性高潮| 影音先锋中文字幕一区| 国产一区二区精品久久91| 中文字幕视频一区| 69av一区二区三区| 日韩视频一区二区三区在线播放免费观看| 麻豆精品在线播放| 亚洲人成小说网站色在线 | 日本成人在线电影网| www.日本不卡| 亚洲h动漫在线| 国产亚洲va综合人人澡精品 | 欧美三级韩国三级日本一级| 欧美激情日韩| 国产成人日日夜夜| 一区二区三区.www| 久久久www成人免费毛片麻豆| 色欲综合视频天天天| 欧美人与禽猛交乱配视频| 国产美女在线观看一区| 亚洲国产日韩a在线播放性色| 久久久蜜臀国产一区二区| 在线日韩国产精品| 精品动漫3d一区二区三区免费| 成人美女视频在线观看18| 男人操女人的视频在线观看欧美| 亚洲日本va午夜在线影院| 精品免费一区二区三区| 欧美日免费三级在线| 亚洲一区二区在线看| 亚洲午夜激情| 欧美一区高清| 成人h动漫精品一区二| 国产一区二区三区电影在线观看| 五月婷婷色综合| 亚洲一区在线观看免费 | 亚洲午夜久久久久久久久久久 | 欧美一区二区三区免费看| 国产一区二区三区免费看| 日韩经典一区二区| 亚洲一区二区三区在线播放| 国产精品国产三级国产普通话蜜臀| 日韩视频免费直播| 91精品国产一区二区人妖| 欧美午夜精品电影| 色狠狠综合天天综合综合| 久久亚洲欧洲| 色偷偷一区二区三区| 久久亚洲不卡| 在线欧美一区二区| 在线影院国内精品| 91久久人澡人人添人人爽欧美| 午夜在线一区|