#include\x3ciostream\x3e\x20//\x20包含输入输出流的头文件\n#include\x3cvector\x3e\x20//\x20包含向量的头文件\n#include\x3cstack\x3e\x20//\x20包含栈的头文件\n#include\x3cqueue\x3e\x20//\x20包含队列的头文件\n#include\x3clist\x3e\x20//\x20包含链表的头文件\n#include\x3cmap\x3e\x20//\x20包含映射的头文件\n#include\x3calgorithm\x3e\x20//\x20包含算法的头文件\n\nusing\x20namespace\x20std;\x20//\x20使用标准命名空间\n\nbool\x20cmp(const\x20int\x20&val)\x20//\x20定义一个函数cmp,用于比较整数是否等于20\n{\n\treturn\x20val\x20==\x2020;\n}\n\nclass\x20Cmp\x20//\x20定义一个类Cmp,用于比较整数是否等于类的成员变量m_val\n{\npublic:\n\tCmp(int\x20val\x20=\x200)\x20:\x20m_val(val)\x20{}\x20//\x20构造函数,初始化类的成员变量m_val\n\tbool\x20operator()(const\x20int\x20&value)\x20{\x20//\x20重载函数调用运算符,用于判断整数是否等于类的成员变量m_val\n\t return\x20m_val\x20==\x20value;\n\t}\nprivate:\n\tint\x20m_val;\x20//\x20类的成员变量m_val\n};\n\nint\x20main()\x20//\x20主函数\n{\n\tlist\x3cint\x3e\x20lst;\x20//\x20声明一个整数链表lst\n\tlst.push_back(10);\x20//\x20在链表末尾插入整数10\n\tlst.push_front(20);\x20//\x20在链表头部插入整数20\n\tlst.push_front(30);\x20//\x20在链表头部插入整数30\n\tlst.push_front(40);\x20//\x20在链表头部插入整数40\n\tlist\x3cint\x3e::iterator\x20iter\x20=\x20lst.begin();\x20//\x20声明一个链表迭代器iter,指向链表的第一个元素位置\n\t//lst.remove(30);\x20//\x20删除链表中的所有值为30的元素\n\t//lst.remove_if(cmp);\x20//\x20删除链表中满足条件的元素,使用函数cmp进行判断\n\t//Cmp\x20foo(30);\x20//\x20创建一个Cmp类的对象foo,m_val为30\n\t//lst.remove_if(foo);\x20//\x20删除链表中满足条件的元素,使用类Cmp的对象进行判断\n\t//lst.erase(iter);\x20//\x20删除链表中迭代器iter指向的元素\n\t//for(iter\x20=\x20lst.begin();\x20iter\x20!=\x20lst.end();\x20iter++)\x20{\x20//\x20遍历链表\n\t//iter\x20=\x20lst.erase(iter);\x20//\x20删除链表中的元素,并返回指向下一个元素的迭代器\n\t//}\n\tfor(iter; iter != lst.end(); ) { // 遍历链表\n if(30 == iter) { // 如果当前元素等于30\n //iter = lst.erase(iter); // 删除链表中的元素,并返回指向下一个元素的迭代器\n lst.erase(iter++); // 删除链表中的元素,并返回指向下一个元素的迭代器,使用后自增操作符\n }else {\n iter++; // 迭代器移动到下一个元素\n }\n }\n\t//\tlst.reverse();\x20//\x20反转链表\n\tlst.sort();\x20//\x20对链表进行排序\n\tfor(iter\x20=\x20lst.begin();\x20iter\x20!=\x20lst.end();\x20iter++)\x20{\x20//\x20遍历链表\n cout\x20<<\x20iter\x20<<\x20"\x20"\x20<<\x20endl;\x20//\x20输出当前元素的值\n }\n\tcout\x20<<\x20endl;\n\treturn\x200;\x20//\x20返回0,表示程序正常结束\n

C++ 链表操作:删除、排序和遍历示例

原文地址: http://www.cveoy.top/t/topic/qutA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录