| Help in Linked list in VB | ||
| Author ybyygu Views 10 Posted at 2008/8/26 03:39 [View In Forum] | ||
|
Hello,lqsaqgpt lqsaqgpt How to remove and add an item in a linked list anywhere in the listl?lqsaqgpt lqsaqgpt 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).lqsaqgpt lqsaqgpt lqsaqgpt Please helplqsaqgpt lqsaqgpt Here's my improved deitel's and deitels code for VB linked listlqsaqgpt lqsaqgpt 'Class cListNodelqsaqgpt ' February 10, 2008lqsaqgpt Option Explicitlqsaqgpt lqsaqgpt Private mNodeData As Variantlqsaqgpt Private mNextNode As cListNodelqsaqgpt lqsaqgpt lqsaqgpt Public Property Get Data() As Variantlqsaqgpt Set Data = mNodeDatalqsaqgpt End Propertylqsaqgpt lqsaqgpt Public Property Let Data(Data As Variant)lqsaqgpt Set mNodeData = Datalqsaqgpt End Propertylqsaqgpt lqsaqgpt lqsaqgpt Public Property Get NextNode() As cListNodelqsaqgpt Set NextNode = mNextNodelqsaqgpt End Propertylqsaqgpt lqsaqgpt lqsaqgpt Public Property Let NextNode(Data As Variant)lqsaqgpt Set mNextNode = Datalqsaqgpt End Propertylqsaqgpt lqsaqgpt lqsaqgpt lqsaqgpt lqsaqgpt ' Class Clistlqsaqgpt ' February 12, 2008lqsaqgpt Option Explicitlqsaqgpt lqsaqgpt Private mFirstNode As cListNodelqsaqgpt Private mLastNode As cListNodelqsaqgpt lqsaqgpt Public Function IsEmpty() As Booleanlqsaqgpt IsEmpty = IIf(mFirstNode Is Nothing, True, False)lqsaqgpt End Functionlqsaqgpt lqsaqgpt lqsaqgpt Public Sub InsertAtFront(InsertItem As Variant)lqsaqgpt Dim TempNode As cListNodelqsaqgpt lqsaqgpt If IsEmpty() Thenlqsaqgpt Set mFirstNode = New cListNodelqsaqgpt Set mLastNode = mFirstNodelqsaqgpt Elselqsaqgpt Set TempNode = mFirstNodelqsaqgpt Set mFirstNode = New cListNodelqsaqgpt mFirstNode.NextNode = TempNodelqsaqgpt End Iflqsaqgpt lqsaqgpt mFirstNode.Data = InsertItemlqsaqgpt lqsaqgpt End Sublqsaqgpt lqsaqgpt lqsaqgpt Public Sub InsertAtBack(InsertItem As Variant)lqsaqgpt Dim TempNode As cListNodelqsaqgpt lqsaqgpt If IsEmpty() Thenlqsaqgpt Set mLastNode = New cListNodelqsaqgpt Set mFirstNode = mLastNodelqsaqgpt Elselqsaqgpt Set TempNode = mLastNodelqsaqgpt Set mLastNode = New cListNodelqsaqgpt TempNode.NextNode = mLastNodelqsaqgpt End Iflqsaqgpt lqsaqgpt mLastNode.Data = InsertItemlqsaqgpt lqsaqgpt End Sublqsaqgpt lqsaqgpt lqsaqgpt Public Function RemoveFromFront()lqsaqgpt Dim RemoveItem As Variantlqsaqgpt If IsEmpty() Thenlqsaqgpt RemoveFromFront = Nulllqsaqgpt Exit Functionlqsaqgpt End Iflqsaqgpt lqsaqgpt RemoveItem = mFirstNode.Datalqsaqgpt lqsaqgpt If mFirstNode Is mLastNode Thenlqsaqgpt Set mFirstNode = Nothinglqsaqgpt Set mLastNode = Nothinglqsaqgpt Elselqsaqgpt Set mFirstNode = mFirstNode.NextNodelqsaqgpt End Iflqsaqgpt lqsaqgpt RemoveFromFront = RemoveItemlqsaqgpt lqsaqgpt End Functionlqsaqgpt lqsaqgpt lqsaqgpt Public Function RemoveFromBack()lqsaqgpt Dim RemoveItem As Variantlqsaqgpt Dim Current As cListNodelqsaqgpt lqsaqgpt If IsEmpty() Thenlqsaqgpt RemoveFromBack = Nulllqsaqgpt Exit Functionlqsaqgpt End Iflqsaqgpt lqsaqgpt RemoveItem = mLastNode.Datalqsaqgpt lqsaqgpt If mFirstNode Is mLastNode Thenlqsaqgpt Set mFirstNode = Nothinglqsaqgpt Set mLastNode = Nothinglqsaqgpt Elselqsaqgpt Set Current = mFirstNodelqsaqgpt lqsaqgpt While Not Current.NextNode Is mLastNodelqsaqgpt Set Current = Current.NextNodelqsaqgpt Wendlqsaqgpt lqsaqgpt Set mLastNode = Currentlqsaqgpt Set Current.NextNode = Nothinglqsaqgpt End Iflqsaqgpt lqsaqgpt RemoveFromBack = RemoveItemlqsaqgpt lqsaqgpt End Functionlqsaqgpt lqsaqgpt lqsaqgpt lqsaqgpt 'This is my trouble and also inserting an item inside the listlqsaqgpt Public Function RemoveFromList(ByVal ItemIndex As Integer)lqsaqgpt Dim Elements As New cListIteratorlqsaqgpt Dim count As Integerlqsaqgpt Dim Item As Variantlqsaqgpt Dim RemoveItem As Variantlqsaqgpt Dim CurrentNode As cListNodelqsaqgpt ' Process in removing an item from the listlqsaqgpt 'lqsaqgpt ' 1.) Iterate through the list, and count items until equal to ItemIndexlqsaqgpt lqsaqgpt lqsaqgpt If IsEmpty() Thenlqsaqgpt Set RemoveFromList = Nulllqsaqgpt Exit Functionlqsaqgpt End Iflqsaqgpt lqsaqgpt Set Elements.StartNode = mFirstNodelqsaqgpt lqsaqgpt count = 0lqsaqgpt While Elements.HasMoreItemslqsaqgpt Set CurrentNode = Elements.CurrentNodelqsaqgpt Call Elements.ToNextNodelqsaqgpt count = count 1lqsaqgpt lqsaqgpt If count = ItemIndex Thenlqsaqgpt Set RemoveItem = CurrentNode.Datalqsaqgpt GoTo SHIFT_LISTlqsaqgpt End Iflqsaqgpt Wendlqsaqgpt lqsaqgpt If count < ItemIndex Thenlqsaqgpt Set RemoveFromList = Nulllqsaqgpt Exit Functionlqsaqgpt End Iflqsaqgpt lqsaqgpt lqsaqgpt SHIFT_LIST:lqsaqgpt While Elements.HasMoreItemslqsaqgpt CurrentNode.NextNode = Elements.CurrentNodelqsaqgpt Call Elements.ToNextNodelqsaqgpt Wendlqsaqgpt lqsaqgpt Set RemoveFromList = RemoveItemlqsaqgpt End Functionlqsaqgpt lqsaqgpt lqsaqgpt Public Property Get Iterator() As Variantlqsaqgpt Dim Iter As cListIteratorlqsaqgpt lqsaqgpt Set Iter = New cListIteratorlqsaqgpt Iter.StartNode = mFirstNodelqsaqgpt Set Iterator = Iterlqsaqgpt End Propertylqsaqgpt lqsaqgpt lqsaqgpt Public Property Get ItemsCount() As Integerlqsaqgpt Dim count As Integerlqsaqgpt Dim Elements As New cListIteratorlqsaqgpt lqsaqgpt Elements.StartNode = mFirstNodelqsaqgpt lqsaqgpt count = 0lqsaqgpt While Elements.HasMoreItemslqsaqgpt Call Elements.ToNextNodelqsaqgpt count = count 1lqsaqgpt Wendlqsaqgpt lqsaqgpt ItemsCount = countlqsaqgpt lqsaqgpt End Propertylqsaqgpt lqsaqgpt lqsaqgpt 'Class cListIteratorlqsaqgpt ' February 12, 2008lqsaqgpt Option Explicitlqsaqgpt lqsaqgpt Private mBookMark As cListNode 'lqsaqgpt Private mFirstNode As cListNode ' Reference nodelqsaqgpt lqsaqgpt lqsaqgpt Public Property Let StartNode(Data As Variant)lqsaqgpt Set mFirstNode = Datalqsaqgpt Set mBookMark = mFirstNodelqsaqgpt End Propertylqsaqgpt lqsaqgpt Public Sub ToNextNode()lqsaqgpt lqsaqgpt If mBookMark Is Nothing Thenlqsaqgpt Exit Sub ' end of the listlqsaqgpt Elselqsaqgpt Set mBookMark = mBookMark.NextNodelqsaqgpt End Iflqsaqgpt End Sublqsaqgpt lqsaqgpt Public Property Get CurrentNode() As cListNodelqsaqgpt Set CurrentNode = mBookMarklqsaqgpt End Propertylqsaqgpt lqsaqgpt Public Function HasMoreItems() As Booleanlqsaqgpt HasMoreItems = IIf(Not mBookMark Is Nothing, True, False)lqsaqgpt End Functionlqsaqgpt lqsaqgpt Public Sub ResetBookMark()lqsaqgpt mBookMark = mFirstNodelqsaqgpt End Sub |
| Reply No. | Replier | Total Replies 1 [View All Replies] [New Reply] | Replied at |
| 1 | hgping | i dont know the website but i saw this | 2010/7/17 01:19 |
Total Replies 1 Thread Per Page 10
|
|||