gpt4 book ai didi

c++ - C++ 中的菊花链表

转载 作者:行者123 更新时间:2023-11-28 05:17:24 24 4
gpt4 key购买 nike

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

#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;
}

最佳答案

  • *it 会给你字符串。要访问字符串中特定位置的字符,请执行以下操作:char tmp = (*it)[index];

  • 您的逻辑将类似于:

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

关于c++ - C++ 中的菊花链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42326030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com