C++手写链表:从节点到迭代器

list模拟实现(简单版)【C++】

基本结构与节点设计

链表的核心是节点(Node),每个节点存储数据和指向下一个节点的指针。在C++中,可通过结构体或类实现:

template <typename T>
struct ListNode {
    T data;             // 数据域
    ListNode* next;     // 指针域
    ListNode(const T& val) : data(val), next(nullptr) {}
};

链表类框架

封装链表操作,包括构造、插入、删除等:

template <typename T>
class SimpleList {
private:
    ListNode<T>* head;  // 头节点指针
    size_t size_;       // 链表长度

public:
    SimpleList() : head(nullptr), size_(0) {}
    ~SimpleList();

    void push_front(const T& val);
    void pop_front();
    bool empty() const { return head == nullptr; }
    size_t size() const { return size_; }
};

关键操作实现

头插法(push_front)

template <typename T>
void SimpleList<T>::push_front(const T& val) {
    ListNode<T>* newNode = new ListNode<T>(val);
    newNode->next = head;
    head = newNode;
    ++size_;
}

头删法(pop_front)

template <typename T>
void SimpleList<T>::pop_front() {
    if (empty()) return;
    ListNode<T>* temp = head;
    head = head->next;
    delete temp;
    --size_;
}

析构函数 需释放所有节点内存:

template <typename T>
SimpleList<T>::~SimpleList() {
    while (!empty()) {
        pop_front();
    }
}

迭代器支持(可选)

为支持范围遍历,可嵌套定义迭代器类:

template <typename T>
class SimpleList {
public:
    class Iterator {
        ListNode<T>* current;
    public:
        Iterator(ListNode<T>* p) : current(p) {}
        T& operator*() { return current->data; }
        Iterator& operator++() { current = current->next; return *this; }
        bool operator!=(const Iterator& other) { return current != other.current; }
    };

    Iterator begin() { return Iterator(head); }
    Iterator end() { return Iterator(nullptr); }
};

使用示例:

SimpleList<int> list;
for (auto it = list.begin(); it != list.end(); ++it) {
    std::cout << *it << " ";
}

注意事项

  1. 内存管理:确保每次new操作都有对应的delete,避免内存泄漏。
  2. 边界条件:处理空链表或单节点链表的特殊情况。
  3. 异常安全:插入/删除操作可能因内存不足抛出异常,需保证对象状态一致性。

此实现仅包含基础功能,实际标准库的std::list还涉及双向链表、更复杂的迭代器设计等特性。

BbS.okane479.info/PoSt/1121_109252.HtM
BbS.okane480.info/PoSt/1121_326613.HtM
BbS.okane481.info/PoSt/1121_557748.HtM
BbS.okane482.info/PoSt/1121_072461.HtM
BbS.okane483.info/PoSt/1121_618284.HtM
BbS.okane484.info/PoSt/1121_436863.HtM
BbS.okane485.info/PoSt/1121_083135.HtM
BbS.okane486.info/PoSt/1121_005767.HtM
BbS.okane487.info/PoSt/1121_859240.HtM
BbS.okane488.info/PoSt/1121_738246.HtM
BbS.okane479.info/PoSt/1121_196530.HtM
BbS.okane480.info/PoSt/1121_077570.HtM
BbS.okane481.info/PoSt/1121_047261.HtM
BbS.okane482.info/PoSt/1121_147366.HtM
BbS.okane483.info/PoSt/1121_681521.HtM
BbS.okane484.info/PoSt/1121_013547.HtM
BbS.okane485.info/PoSt/1121_811446.HtM
BbS.okane486.info/PoSt/1121_856439.HtM
BbS.okane487.info/PoSt/1121_204543.HtM
BbS.okane488.info/PoSt/1121_198843.HtM
BbS.okane479.info/PoSt/1121_298221.HtM
BbS.okane480.info/PoSt/1121_626144.HtM
BbS.okane481.info/PoSt/1121_340792.HtM
BbS.okane482.info/PoSt/1121_646244.HtM
BbS.okane483.info/PoSt/1121_348705.HtM
BbS.okane484.info/PoSt/1121_168821.HtM
BbS.okane485.info/PoSt/1121_015813.HtM
BbS.okane486.info/PoSt/1121_614042.HtM
BbS.okane487.info/PoSt/1121_775781.HtM
BbS.okane488.info/PoSt/1121_886596.HtM
BbS.okane479.info/PoSt/1121_474775.HtM
BbS.okane480.info/PoSt/1121_571243.HtM
BbS.okane481.info/PoSt/1121_035163.HtM
BbS.okane482.info/PoSt/1121_307850.HtM
BbS.okane483.info/PoSt/1121_416680.HtM
BbS.okane484.info/PoSt/1121_467786.HtM
BbS.okane485.info/PoSt/1121_726692.HtM
BbS.okane486.info/PoSt/1121_451248.HtM
BbS.okane487.info/PoSt/1121_139714.HtM
BbS.okane488.info/PoSt/1121_635530.HtM
BbS.okane490.info/PoSt/1121_144242.HtM
BbS.okane491.info/PoSt/1121_612403.HtM
BbS.okane492.info/PoSt/1121_002605.HtM
BbS.okane493.info/PoSt/1121_733793.HtM
BbS.okane494.info/PoSt/1121_580833.HtM
BbS.okane495.info/PoSt/1121_600220.HtM
BbS.okane496.info/PoSt/1121_586720.HtM
BbS.okane497.info/PoSt/1121_152140.HtM
BbS.okane498.info/PoSt/1121_223296.HtM
BbS.okane499.info/PoSt/1121_600683.HtM
BbS.okane490.info/PoSt/1121_883111.HtM
BbS.okane491.info/PoSt/1121_504659.HtM
BbS.okane492.info/PoSt/1121_051672.HtM
BbS.okane493.info/PoSt/1121_417617.HtM
BbS.okane494.info/PoSt/1121_432389.HtM
BbS.okane495.info/PoSt/1121_329017.HtM
BbS.okane496.info/PoSt/1121_085898.HtM
BbS.okane497.info/PoSt/1121_297231.HtM
BbS.okane498.info/PoSt/1121_961401.HtM
BbS.okane499.info/PoSt/1121_320516.HtM
BbS.okane490.info/PoSt/1121_420386.HtM
BbS.okane491.info/PoSt/1121_938888.HtM
BbS.okane492.info/PoSt/1121_715899.HtM
BbS.okane493.info/PoSt/1121_262705.HtM
BbS.okane494.info/PoSt/1121_340195.HtM
BbS.okane495.info/PoSt/1121_546017.HtM
BbS.okane496.info/PoSt/1121_651132.HtM
BbS.okane497.info/PoSt/1121_588186.HtM
BbS.okane498.info/PoSt/1121_656078.HtM
BbS.okane499.info/PoSt/1121_138776.HtM
BbS.okane490.info/PoSt/1121_702860.HtM
BbS.okane491.info/PoSt/1121_447638.HtM
BbS.okane492.info/PoSt/1121_111649.HtM
BbS.okane493.info/PoSt/1121_096481.HtM
BbS.okane494.info/PoSt/1121_993309.HtM
BbS.okane495.info/PoSt/1121_612906.HtM
BbS.okane496.info/PoSt/1121_351714.HtM
BbS.okane497.info/PoSt/1121_469096.HtM
BbS.okane498.info/PoSt/1121_066349.HtM
BbS.okane499.info/PoSt/1121_701391.HtM

#牛客AI配图神器#

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-20 10:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务