首页 > 代码库 > c++第五版练习9.28
c++第五版练习9.28
练习9.28 编写函数,接受一个forward_list<string>和两个string共三个参数。函数应在链表中查找第一个string,并将第二个string插入到紧接着第一个string之后的位置,若第一个string未在链表中,则将第二个string插入到链表的末尾。
分析:1.首先,要求是编写一个函数,有三个参数 ;
2.要求在链表中进行操作,则说明更改了输入给函数的链表的相关信息;
说明输入的链表需要使用引用,保证输入的链表在函数操作中被更改;得到的函数为:void MyFunc(forward_list<string>&flst,string strl1,string strl2)
3.根据要求需要在链表中查找第一个string,判断是否出现,并且知道位置;说明首先需要对strl1进行遍历,找到strl1停止,或者找到链表末尾(指向链表最后一个元素的后面)仍未找到停止;
代码:
#include <iostream> #include<forward_list> #include<string> using namespace std; void myFunc(forward_list<string>&flst, string strl1, string strl2) { auto prev = flst.before_begin(); auto curr = flst.begin(); while (curr != flst.end()) { if (*curr == strl1) //判断当前string是否与strl1相同 { flst.insert_after(curr, strl2); return; } prev = curr; ++curr; } flst.insert_after(prev, strl2); //prev指向最后一个元素,curr指向最后一个元素的后面,故该处使用prev } int main() { forward_list<string> flist{"year","month","day","hour"}; /*myFunc(flist, "year", "hello"); //在第一个元素的后面插入hello for (auto i : flist) { cout << i << endl; }*/ /*myFunc(flist, "day", "hello"); //在day后面插入hello for (auto i : flist) { cout << i << endl; }*/ myFunc(flist, "ok", "hello"); //元素列表中找不到ok,则会将hello插入到链尾 for (auto i : flist) { cout << i << endl; } return 0; }
c++第五版练习9.28
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。