我有一个问题,我需要检查给定的列表是否是菊花链式的。菊花链列表是带有字符串的列表,其中第一个元素的最后一个字母等于下一个元素的第一个字母。输出是如果列表中有那种元素将它们打印到控制台。列表大小不能小于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;
}
答案 0 :(得分:1)
*it
会为您提供字符串。为了访问字符串内特定位置的字符,请执行:char tmp = (*it)[index];
您的逻辑将是:
++it
将迭代器移动到列表中的下一个字符串--it
将迭代器移回循环内的原始迭代器。 ,您需要在上面的步骤1之后进行额外的检查:
if(it == li.end()) break;
以避免尝试访问无效内存。