Verse Library verse

21 Linked List Iterator

Provides an iterator class with methods to safely navigate, insert, and delete nodes during list traversal.

extracted-snippets/documentation/en-us/uefn/linked-lists-in-verse/21-linked-list-iterator.verse

# Source URL: https://dev.epicgames.com/documentation/en-us/uefn/linked-lists-in-verse
# Local doc:  epic-docs/documentation/en-us/uefn/linked-lists-in-verse.md
# Section:    linked\_list\_iterator
# Iterates over a linked_list and can add nodes or remove nodes as it iterates.
linked_list_iterator := class:
    List:linked_list
    var CurrentNode:list_node
 
    # If there is a NextNode for the iterator to travel to, travel to that node.
    Next()<transacts><decides>:list_node=
        NextNode := CurrentNode.Next?
        set CurrentNode = NextNode

    # Adds a new node after CurrentNode.
    AddNextNode(NewNode:list_node):void=
        if(NextNode := CurrentNode.Next?):
            set NewNode.Next = option{NextNode}
            set CurrentNode.Next = option{NewNode}
            Print("Successfully added a new node!")
        else:
            set CurrentNode.Next = option{NewNode}
            Print("Successfully added a new node to the tail of the list!")

    # Remove the next node after CurrentNode. If the next node
    # has a Next reference, set that node to the next node of CurrentNode.
    RemoveNextNode():void=
        if(RemovedNode := CurrentNode.Next?):
            if(NodeAfter := RemovedNode.Next?, set RemovedNode.Next = false):
                set CurrentNode.Next = option{NodeAfter}
                Print("Removed the node between CurrentNode and the node after it")

Sign in free to read the full source 🌴

This Verse Library file is members-only. Create a free account to view the complete source and download the .verse file.

Sign in with Discord

Comments

    Sign in to vote, comment, or suggest an edit. Sign in