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