Untitled

 avatar
unknown
plain_text
2 months ago
986 B
2
Indexable
#include <iostream>
#include <memory>
template <typename T>
struct ListNode {
    T data;
    std::shared_ptr<ListNode<T>> next;
};

template<typename T>
std::shared_ptr<ListNode<T>> SearchList(std::shared_ptr<ListNode<T>> L, T key) {
    while(L && L->data != key)
        L = L -> next;
    return L;
}

// Insert new_node after node
template<typename T>
void InsertAfter(const std::shared_ptr<ListNode<T>>& node,
                 const std::shared_ptr<ListNode<T>>& new_node) {
    new_node -> next = node -> next;
    node -> next = new_node;
}

// Delete the node past this one. Assume node is not a tail.
template<typename T>
void DeleteAfter(const std::shared_ptr<ListNode<T>>& node) {
    node -> next = node -> next -> next;
}

int main() {
    std::shared_ptr<ListNode<int>> L {new ListNode<int>};
    L->data = -1;
    L->next = nullptr;
    //std::shared_ptr<ListNode<int>> pos {SearchList(L, 0)};
    //std::cout << pos->data << "\n";  
}
Leave a Comment