Homepage   Forum     WEB     BBS  
Thread List  
Forum Guide Map  
Thread Content             
   
Help in Linked list in VB
Author ybyygu   Views 2   Posted at 2008/8/26 03:39  [View In Forum]
Hello,kioji
kioji
How to remove and add an item in a linked list anywhere in the listl?kioji
kioji
I just improve the deitel n deitel code for linked list and it works fine in manipulating at both ends (front and back ends) of teh linked list but no code is given if manipulating (inserting and deleting inside teh list).kioji
kioji
kioji
Please helpkioji
kioji
Here's my improved deitel's and deitels code for VB linked listkioji
kioji
'Class cListNodekioji
' February 10, 2008kioji
Option Explicitkioji
kioji
Private mNodeData As Variantkioji
Private mNextNode As cListNodekioji
kioji
kioji
Public Property Get Data() As Variantkioji
Set Data = mNodeDatakioji
End Propertykioji
kioji
Public Property Let Data(Data As Variant)kioji
Set mNodeData = Datakioji
End Propertykioji
kioji
kioji
Public Property Get NextNode() As cListNodekioji
Set NextNode = mNextNodekioji
End Propertykioji
kioji
kioji
Public Property Let NextNode(Data As Variant)kioji
Set mNextNode = Datakioji
End Propertykioji
kioji
kioji
kioji
kioji
' Class Clistkioji
' February 12, 2008kioji
Option Explicitkioji
kioji
Private mFirstNode As cListNodekioji
Private mLastNode As cListNodekioji
kioji
Public Function IsEmpty() As Booleankioji
IsEmpty = IIf(mFirstNode Is Nothing, True, False)kioji
End Functionkioji
kioji
kioji
Public Sub InsertAtFront(InsertItem As Variant)kioji
Dim TempNode As cListNodekioji
kioji
If IsEmpty() Thenkioji
Set mFirstNode = New cListNodekioji
Set mLastNode = mFirstNodekioji
Elsekioji
Set TempNode = mFirstNodekioji
Set mFirstNode = New cListNodekioji
mFirstNode.NextNode = TempNodekioji
End Ifkioji
kioji
mFirstNode.Data = InsertItemkioji
kioji
End Subkioji
kioji
kioji
Public Sub InsertAtBack(InsertItem As Variant)kioji
Dim TempNode As cListNodekioji
kioji
If IsEmpty() Thenkioji
Set mLastNode = New cListNodekioji
Set mFirstNode = mLastNodekioji
Elsekioji
Set TempNode = mLastNodekioji
Set mLastNode = New cListNodekioji
TempNode.NextNode = mLastNodekioji
End Ifkioji
kioji
mLastNode.Data = InsertItemkioji
kioji
End Subkioji
kioji
kioji
Public Function RemoveFromFront()kioji
Dim RemoveItem As Variantkioji
If IsEmpty() Thenkioji
RemoveFromFront = Nullkioji
Exit Functionkioji
End Ifkioji
kioji
RemoveItem = mFirstNode.Datakioji
kioji
If mFirstNode Is mLastNode Thenkioji
Set mFirstNode = Nothingkioji
Set mLastNode = Nothingkioji
Elsekioji
Set mFirstNode = mFirstNode.NextNodekioji
End Ifkioji
kioji
RemoveFromFront = RemoveItemkioji
kioji
End Functionkioji
kioji
kioji
Public Function RemoveFromBack()kioji
Dim RemoveItem As Variantkioji
Dim Current As cListNodekioji
kioji
If IsEmpty() Thenkioji
RemoveFromBack = Nullkioji
Exit Functionkioji
End Ifkioji
kioji
RemoveItem = mLastNode.Datakioji
kioji
If mFirstNode Is mLastNode Thenkioji
Set mFirstNode = Nothingkioji
Set mLastNode = Nothingkioji
Elsekioji
Set Current = mFirstNodekioji
kioji
While Not Current.NextNode Is mLastNodekioji
Set Current = Current.NextNodekioji
Wendkioji
kioji
Set mLastNode = Currentkioji
Set Current.NextNode = Nothingkioji
End Ifkioji
kioji
RemoveFromBack = RemoveItemkioji
kioji
End Functionkioji
kioji
kioji
kioji
'This is my trouble and also inserting an item inside the listkioji
Public Function RemoveFromList(ByVal ItemIndex As Integer)kioji
Dim Elements As New cListIteratorkioji
Dim count As Integerkioji
Dim Item As Variantkioji
Dim RemoveItem As Variantkioji
Dim CurrentNode As cListNodekioji
' Process in removing an item from the listkioji
'kioji
' 1.) Iterate through the list, and count items until equal to ItemIndexkioji
kioji
kioji
If IsEmpty() Thenkioji
Set RemoveFromList = Nullkioji
Exit Functionkioji
End Ifkioji
kioji
Set Elements.StartNode = mFirstNodekioji
kioji
count = 0kioji
While Elements.HasMoreItemskioji
Set CurrentNode = Elements.CurrentNodekioji
Call Elements.ToNextNodekioji
count = count 1kioji
kioji
If count = ItemIndex Thenkioji
Set RemoveItem = CurrentNode.Datakioji
GoTo SHIFT_LISTkioji
End Ifkioji
Wendkioji
kioji
If count < ItemIndex Thenkioji
Set RemoveFromList = Nullkioji
Exit Functionkioji
End Ifkioji
kioji
kioji
SHIFT_LIST:kioji
While Elements.HasMoreItemskioji
CurrentNode.NextNode = Elements.CurrentNodekioji
Call Elements.ToNextNodekioji
Wendkioji
kioji
Set RemoveFromList = RemoveItemkioji
End Functionkioji
kioji
kioji
Public Property Get Iterator() As Variantkioji
Dim Iter As cListIteratorkioji
kioji
Set Iter = New cListIteratorkioji
Iter.StartNode = mFirstNodekioji
Set Iterator = Iterkioji
End Propertykioji
kioji
kioji
Public Property Get ItemsCount() As Integerkioji
Dim count As Integerkioji
Dim Elements As New cListIteratorkioji
kioji
Elements.StartNode = mFirstNodekioji
kioji
count = 0kioji
While Elements.HasMoreItemskioji
Call Elements.ToNextNodekioji
count = count 1kioji
Wendkioji
kioji
ItemsCount = countkioji
kioji
End Propertykioji
kioji
kioji
'Class cListIteratorkioji
' February 12, 2008kioji
Option Explicitkioji
kioji
Private mBookMark As cListNode 'kioji
Private mFirstNode As cListNode ' Reference nodekioji
kioji
kioji
Public Property Let StartNode(Data As Variant)kioji
Set mFirstNode = Datakioji
Set mBookMark = mFirstNodekioji
End Propertykioji
kioji
Public Sub ToNextNode()kioji
kioji
If mBookMark Is Nothing Thenkioji
Exit Sub ' end of the listkioji
Elsekioji
Set mBookMark = mBookMark.NextNodekioji
End Ifkioji
End Subkioji
kioji
Public Property Get CurrentNode() As cListNodekioji
Set CurrentNode = mBookMarkkioji
End Propertykioji
kioji
Public Function HasMoreItems() As Booleankioji
HasMoreItems = IIf(Not mBookMark Is Nothing, True, False)kioji
End Functionkioji
kioji
Public Sub ResetBookMark()kioji
mBookMark = mFirstNodekioji
End Sub
      

Reply No. Replier Total Replies 0   [View All Replies]  [New Reply] Replied at
No replies currently or prohibitted to show
 Total Replies 0  Thread Per Page 10
Page 1/0  |<  <<     >>  >| 
Power by DiY-Page 5.3.0 RLC