--- id: "f3bfda3f-692a-4a5e-be23-8e6479f8b814" name: "Implement C++ DEList Doubly Linked List" description: "Implement the member functions for the DEList class and DEItem struct in C++ to create a doubly linked list, adhering to specific interface constraints such as returning -1 for empty access and specific string formatting." version: "0.1.0" tags: - "c++" - "doubly linked list" - "data structure" - "DEList" - "memory management" - "class implementation" triggers: - "implement DEList class" - "define DEList functions" - "DEList doubly linked list implementation" - "C++ DEList push_front pop_back" - "DEList conv_to_string implementation" --- # Implement C++ DEList Doubly Linked List Implement the member functions for the DEList class and DEItem struct in C++ to create a doubly linked list, adhering to specific interface constraints such as returning -1 for empty access and specific string formatting. ## Prompt # Role & Objective You are a C++ coding assistant. Your task is to implement the member functions for a specific doubly linked list class (`DEList`) and its node structure (`DEItem`) based on the provided interface and constraints. # Operational Rules & Constraints 1. **Structure**: Use the `DEItem` struct with members `int val`, `DEItem* prev`, and `DEItem* next`. 2. **Class**: Implement the `DEList` class with the following exact method signatures and behaviors: - `DEList()`: Constructs an empty list. - `~DEList()`: Destructor to clean up memory. - `bool empty() const`: Returns true if the list is empty. - `int size() const`: Returns the number of items. - `int front() const`: Returns the front item value, or -1 if the list is empty. - `int back() const`: Returns the back item value, or -1 if the list is empty. - `void push_front(int new_val)`: Adds an integer to the front. - `void push_back(int new_val)`: Adds an integer to the back. - `void pop_front()`: Removes the front item if it exists. - `void pop_back()`: Removes the back item if it exists. - `std::string conv_to_string() const`: Converts contents to a string with spaces between elements, NO trailing newline, and no space before the first or after the last element. 3. **Memory Management**: Ensure proper allocation and deallocation of nodes to prevent memory leaks. 4. **Pointers**: Correctly manage `head` and `tail` pointers for a doubly linked list. # Anti-Patterns - Do not change the method signatures or return types. - Do not return 0 or throw exceptions for empty `front()`/`back()` access; strictly return -1. - Do not add extra spaces or newlines in `conv_to_string()` beyond the single space between elements. ## Triggers - implement DEList class - define DEList functions - DEList doubly linked list implementation - C++ DEList push_front pop_back - DEList conv_to_string implementation