gpt4 book ai didi

c++ - c++同时遍历多个链表

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:44 27 4
gpt4 key购买 nike

我正在执行一项任务,需要从包含多个 char 链表的链表中计算指标(每一行都是一个链表,如图所示)。因此,我将需要遍历包含第二行空格的每个节点,以检查其他四个空格(顶部、底部、左侧、右侧)周围有多少个空格。例如,引用下图,第三行第二个空格周围有四个空格,所以count++。 (“H”只是简单地表示非空格字符,抱歉,我没有足够的声誉来发布真实图片)。

我被允许使用 STL 列表库。我试图使用三个迭代器同时遍历三行。但是,代码变得非常困惑,甚至无法正常工作,因为每一行的长度都不同。这两天我一直在想解决方案,但是由于我只练习了两个月的C++,所以我能想到的很有限。所以我想知道是否有人可以给我提示或更聪明的解决方案。

提前感谢您的建议。


空格 |空间 | --H-- | --H-- | -- 高 -- |空|空

--- H --| --H ---|空间 |空间 | --- H- | -- 高 -- |空

--- H --|空间 |空间 |空间 | -- H-- |空间|空

空格 | --H-- |空间 |空间 | -- 高 -- |空 |空

最佳答案

如果您可以使用任何标准库容器,那么我建议您使用 vector 的 vector 。这样您就可以通过索引循环并在相邻 vector 上使用该索引。如果您可以在算法之前填充 vector ,那么您可以制作相同大小的所有 vector 并首先用所有非空格(零?)填充它们,然后用您的链接列表的内容填充它们。

对于固定大小的 vector ,它基本上应该是 2 个嵌套循环(从第二个到最后一个条目),只检查空格和相邻空格。

未测试:

bool isSpace(char c) { return c == ' '; } // std::isspace tests for all whitespaces

int countSurroundedSpaces(const std::vector<std::vector<char> >& vecs)
{
int count = 0;
for (int v = 1; v < vecs.size()-1; ++v)
{
for (int i = 1; i < vecs[v].size()-1; ++i)
{
if (isSpace(vecs[v][i])
&& isSpace(vecs[v-1][i]) && isSpace(vecs[v][i-1])
&& isSpace(vecs[v][i+1]) && isSpace(vecs[v+1][i]))
{
++count;
}
}
}
return count;
}

关于c++ - c++同时遍历多个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131520/

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