为什么我的代码给出一个无限循环,我多次检查我的代码,我不知道错误在哪里,但我的输出在无限循环中是34,它是双链表的代码!
所以请告诉我错误在哪里以及为什么我的循环在我的代码中显示34而不是77并且我的打印功能有问题吗?
#include <sstream>
#include <iostream>
template <typename ... Args>
std::string logging (std::string const & valA, std::string const & valB,
std::string const & valC, Args const & ... args)
{
std::ostringstream oss;
using unused = int[];
oss << "valA [" << valA << "], "
<< "valB [" << valB << "], "
<< "valC [" << valC << ']';
int cnt { -1 };
(void)unused { 0, (oss << ", extra val "
<< ++cnt << " [" << args << ']', 0)... };
return oss.str();
}
int main()
{
auto l = logging("val1", "val2", "val3", 0, 1L, 2LL, 3U, 4UL, 5ULL,
6.0, 7.0f, "eight");
std::cout << l << std::endl;
}
答案 0 :(得分:0)
添加(数据,位置)有2个问题。
对于双链接列表中的第一个节点,一旦head和tail指向同一节点,我们就完成了。当没有节点时,位置无关紧要。
所以在“Linked List Formed”之后停止添加逻辑。添加Else并将所有代码移到其中,它按预期工作。
代码应该能够断言Head-&gt;上一个和尾巴 - &gt;接下来是空的。
同时添加单个新节点时,您不希望为2x节点分配内存。
不要为n1调用新的Node()。