| 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
|
|||