当前位置:首页 C++内部资料 > 正文

【内部资料】c++STL模板之链表操作

作者:野牛程序员:2023-09-13 10:46:51 C++内部资料阅读 2518

以下是关于STL链表的知识点和用法,使用C++98语法,每个函数和方法都有单独的讲解:

  1. 单向链表 (std::forward_list):

    #include <iostream>
    #include <forward_list>
    using namespace std;
    
    int main() {
        forward_list<int> myList;
    
        // 插入元素到链表头部
        myList.push_front(10);
        myList.push_front(20);
    
        // 遍历链表
        for (forward_list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {
            int num = *it;
            // 处理元素
            cout << num << " ";
        }
        cout << endl;
    
        return 0;
    }
    • 单向链表是一种简单的链表,每个节点包含一个指向下一个节点的指针。它通常用于那些只需要前进遍历的场景。

  2. 双向链表 (std::list):

    #include <iostream>
    #include <list>
    using namespace std;
    
    int main() {
        list<int> myList;
    
        // 插入元素到链表尾部
        myList.push_back(10);
        myList.push_back(20);
    
        // 遍历链表
        for (list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {
            int num = *it;
            // 处理元素
            cout << num << " ";
        }
        cout << endl;
    
        return 0;
    }
    • 双向链表每个节点包含两个指针,一个指向前一个节点,一个指向后一个节点。这使得双向链表在插入和删除元素时更加灵活。

  3. 插入和删除元素:

    #include <iostream>
    #include <list>
    using namespace std;
    
    int main() {
        list<int> myList;
        myList.push_back(10);
        myList.push_back(20);
        myList.push_back(30);
    
        // 在指定位置插入元素
        list<int>::iterator it = myList.begin();
        ++it; // 移到第二个元素
        myList.insert(it, 25);
    
        // 删除元素
        myList.erase(myList.begin()); // 删除第一个元素
    
        // 遍历链表
        for (list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {
            int num = *it;
            // 处理元素
            cout << num << " ";
        }
        cout << endl;
    
        return 0;
    }
    • 链表的一个主要优点是能够在任意位置高效地插入和删除元素。

  4. 清空链表:

    #include <iostream>
    #include <list>
    using namespace std;
    
    int main() {
        list<int> myList = {10, 20, 30};
        myList.clear(); // 清空链表
    
        // 检查链表是否为空
        if (myList.empty()) {
            cout << "链表为空" << endl;
        }
    
        return 0;
    }
    • 使用 clear 方法可以快速清空整个链表。

  5. 链表的大小和空检查:

    #include <iostream>
    #include <list>
    using namespace std;
    
    int main() {
        list<int> myList = {10, 20, 30};
        int size = myList.size();    // 获取链表大小
    
        // 检查链表是否为空
        if (myList.empty()) {
            cout << "链表为空" << endl;
        }
    
        return 0;
    }
    • 使用 size 方法获取链表中元素的数量,使用 empty 方法检查链表是否为空。

这些示例演示了STL链表的基本用法,使用了C++98语法。每个函数和方法都有单独的讲解和示例。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击