C ++中的菊花链式列表

时间:2017-02-19 10:15:37

标签: c++

我有一个问题,我需要检查给定的列表是否是菊花链式的。菊花链列表是带有字符串的列表,其中第一个元素的最后一个字母等于下一个元素的第一个字母。输出是如果列表中有那种元素将它们打印到控制台。列表大小不能小于4且大于25个单词。也许我的问题是我无法遍历列表。我知道任务的逻辑,但我不熟悉列表,它没有运算符[]所以我不知道如何实现它。这是我的代码:

#include <iostream>
#include <list>
#include <string>
using namespace std;

int main()
{
    int n;
    cin >> n;

    if (n < 4 || n > 25)
    {
        cout << "N cant be less than 4 and more than 25" << endl;
        return 1;
    }

    list<string> li;
    string line;

    for (int i = 0; i < n; i++)
    {
         cin >> line;
         li.push_back(line);
    }

    /*for (list<string>::iterator it = li.begin(); it != li.end(); it++)
    {
        cout << *it << " ";
    }*/

    for (list<string>::iterator it = li.begin(); it != li.end(); it++)
    {
        if ()
    }

    return 0;
 }

1 个答案:

答案 0 :(得分:1)

  • *it会为您提供字符串。为了访问字符串内特定位置的字符,请执行:char tmp = (*it)[index];

  • 您的逻辑将是:

    1. ++it将迭代器移动到列表中的下一个字符串
    2. 将此字符串的第一个字符存储在某个临时变量
    3. --it将迭代器移回循环内的原始迭代器。
    4. 现在访问此迭代器的最后一个元素,并将其与先前在步骤2中存储的元素进行比较。
  • 在循环中
  • ,您需要在上面的步骤1之后进行额外的检查: if(it == li.end()) break;以避免尝试访问无效内存。