zoukankan      html  css  js  c++  java
  • 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;
    }

            

  • 相关阅读:
    PHP 内核:foreach 是如何工作的(一)
    PHP 消息队列 Kafka 使用
    PHP7 生产环境队列 Beanstalkd 正确使用姿势
    你知道Laravel ORM 中的骚操作吗
    PHP 的 interface 有什么用处
    PHP 框架 Hyperf 实现处理超时未支付订单和延时队列
    java 浅谈web系统当中的cookie和session会话机制
    如何用charles进行https抓包
    Java实现图片按修改时间排序
    java读取文本文件内容
  • 原文地址:https://www.cnblogs.com/whitewn/p/6592737.html
Copyright © 2011-2022 走看看