• 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;
    }

            

  • 相关阅读:
    深入探究分布式锁
    Java的类加载器有几种?什么是双亲委派机制?
    Java的Arrays.sort()方法到底用的什么排序算法
    什么是SPI
    Go语言学习笔记(八)golang 操作 Redis & Mysql & RabbitMQ
    Go语言学习笔记(七)杀手锏 Goroutine + Channel
    Go语言学习笔记(六)net & net/http
    Go语言学习笔记(五)文件操作
    Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect
    Go语言学习笔记(三)数组 & 切片 & map
  • 原文地址:https://www.cnblogs.com/whitewn/p/6592737.html
Copyright © 2020-2023  润新知