C++ C+中的菊花链列表+;

C++ C+中的菊花链列表+;,c++,C++,我有一个问题,我需要检查一个给定的列表是否是菊花链。菊花链表是带有字符串的列表,其中第一个元素的最后一个字母等于下一个元素的第一个字母。如果列表中有这样的元素,则输出将它们打印到控制台。列表大小不能小于4个单词,也不能超过25个单词。也许我的问题是我不能反复浏览列表。我知道这个任务的逻辑,但我不熟悉这个列表,它没有运算符[],所以我不知道如何实现它。这是我的密码: #include <iostream> #include <list> #include <strin

我有一个问题,我需要检查一个给定的列表是否是菊花链。菊花链表是带有字符串的列表,其中第一个元素的最后一个字母等于下一个元素的第一个字母。如果列表中有这样的元素,则输出将它们打印到控制台。列表大小不能小于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;
 }
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;
如果(n<4 | n>25)
{
cout线;
li.向后推(线);
}
/*for(list::iterator it=li.begin();it!=li.end();it++)
{
cout
  • *它将为您提供字符串。要访问字符串中特定位置的字符,请执行:
    char tmp=(*it)[index];

  • 您的逻辑如下:

  • ++it
    将迭代器移动到列表中的下一个字符串
  • 将此字符串的第一个字符存储在某个临时变量中
  • ——将迭代器移回循环中的原始迭代器是一种方法
  • 现在访问该迭代器的最后一个元素,并将其和之前存储在步骤2中的元素进行比较
  • 在循环中,在步骤1之后需要进行额外的检查。上述检查是:
    如果(it==li.end())中断;
    以避免尝试访问无效内存


*它
给你
字符串
it->front()
给你第一个字符,依此类推。如果没有,应该有人告诉你怎么做。此外,你可以在循环中增加迭代器以获得列表中的下一个元素(不过你需要额外检查
end
)这是我键入的
如果(it->back()==(it++)->front())
Oops,最好阅读后增量运算符,你正在解引用同一个字符串。