任何人都可以告诉我为什么我的程序进入无限循环?

时间:2018-02-16 17:17:22

标签: c++ loops

为什么我的代码给出一个无限循环,我多次检查我的代码,我不知道错误在哪里,但我的输出在无限循环中是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;
 }

1 个答案:

答案 0 :(得分:0)

添加(数据,位置)有2个问题。

对于双链接列表中的第一个节点,一旦head和tail指向同一节点,我们就完成了。当没有节点时,位置无关紧要。

所以在“Linked List Formed”之后停止添加逻辑。添加Else并将所有代码移到其中,它按预期工作。

代码应该能够断言Head-&gt;上一个和尾巴 - &gt;接下来是空的。

同时添加单个新节点时,您不希望为2x节点分配内存。

不要为n1调用新的Node()。