序列化链表

#include 
#include 
#include 
#include 
#include 

class ListNode {
public:
	 ListNode(int val) : value(val), prev(nullptr), next(nullptr) {}
    ListNode(int val) : value(val), prev(nullptr), next(nullptr) {}

    // Getter and setter for value
    int getValue() const {
        return value;
    }

    void setValue(int val) {
        value = val;
    }

    // Getter and setter for prev pointer
    ListNode* getPrev() const {
        return prev;
    }

    void setPrev(ListNode* node) {
        prev = node;
    }

    // Getter and setter for next pointer
    ListNode* getNext() const {
        return next;
    }

    void setNext(ListNode* node) {
        next = node;
    }

private:
    friend class boost::serialization::access;

    template <typename Archive>
    void serialize(Archive& ar, const unsigned int version) {
        ar & value;
        ar & prev;
        ar & next;
    }

    int value;
    ListNode* prev;
    ListNode* next;
};

int main() {
    // Create a doubly linked list
    ListNode* head = new ListNode(1);
    ListNode* node2 = new ListNode(2);
    ListNode* node3 = new ListNode(3);

    head->setNext(node2);
    node2->setPrev(head);
    node2->setNext(node3);
    node3->setPrev(node2);

    // Serialize the linked list to a file
    std::ofstream ofs("linked_list.txt");
    boost::archive::text_oarchive oa(ofs);
    oa << head;
    ofs.close();

    // Deserialize the linked list from the file
    ListNode* deserializedHead = nullptr;
    std::ifstream ifs("linked_list.txt");
    boost::archive::text_iarchive ia(ifs);
    ia >> deserializedHead;
    ifs.close();

    // Print the deserialized linked list
    ListNode* current = deserializedHead;
    while (current != nullptr) {
        std::cout << current->getValue() << " ";
        current = current->getNext();
    }
    std::cout << std::endl;

    // Clean up memory
    delete head;
    delete deserializedHead;

    return 0;
}

你可能感兴趣的:(boost,链表,restful,数据结构)