Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C或C+中创建动态堆栈的动态数组+;_C++_C_Arrays_Jagged Arrays - Fatal编程技术网

C++ 如何在C或C+中创建动态堆栈的动态数组+;

C++ 如何在C或C+中创建动态堆栈的动态数组+;,c++,c,arrays,jagged-arrays,C++,C,Arrays,Jagged Arrays,这是我的C类编程作业: 有一列火车开往你的终点站。列车上有N个货物,货物的标签从1到N。您必须按照从N到1的顺序将货物运出终点站(如654321)1 5 3 4 2是一列进站列车的示例,该列车有5件货物 您的终端有多个导轨。这是具有5个导轨的终端的外观: 您的终端中只允许3种操作: 把你收到的货物送出码头 把你收到的货物送到终点站 把货物从火车上运出码头 示例:进站列车为1 2 3 输入:您必须接收作为火车货物的输入,例如1 2 3。输入列车的货物不超过100件 输出:显示尽可能少的rail

这是我的C类编程作业:

有一列火车开往你的终点站。列车上有N个货物,货物的标签从1到N。您必须按照从N到1的顺序将货物运出终点站(如
654321
)<代码>1 5 3 4 2是一列进站列车的示例,该列车有5件货物

您的终端有多个导轨。这是具有5个导轨的终端的外观:

您的终端中只允许3种操作:

  • 把你收到的货物送出码头
  • 把你收到的货物送到终点站
  • 把货物从火车上运出码头
  • 示例:进站列车为
    1 2 3

    输入:您必须接收作为火车货物的输入,例如
    1 2 3
    。输入列车的货物不超过100件

    输出:显示尽可能少的rails数量以完成该过程,在上图中,输出应为
    1

    我认为我的(psudo)代码应该如下所示:

    for(int i = 1; i <= cargoAmount;)
    {
          if(i == trainin.top()) //found in IN: send the cargo out
          {
             trainin.pop(); 
             i++;
             continue; 
          }
          for(j = 0; j <= TotalStackCurrentlyInUse??; j++) //found in a RAIL: send the cargo out
          {
             if(i == rail[j].top())
             {
                rail[j].pop();
                i++;
                break; 
             }
          }
          if(j == TotalStackCurrentlyInUse) //Not found: Send the train to the rail stack
               SendTheTrainToTheRail(); 
               // I will try to write this thing later
               // I have the idea that the new cargo should have the value lass than rail[j].top()
     }
    

    for(inti=1;i您只需创建一个
    std::vector
    并在其上循环即可。您的代码修改如下:

      vector<stack> railStacks;//This should be accessible and appended to by `SendTheTrainToTheRail()`
      for(j = 0; j < railStacks.size() ; j++) //found in a RAIL: send the cargo out
      {
         if(i == railStacks[j].top())
         {
            railStacks[j].pop();
            i++;
            break; 
         }
      }
      if(j == railStacks.size()) //Not found: Send the train to the rail stack
           SendTheTrainToTheRail();
    
    vector railStacks;//这应该可以访问,并附加在`SendTheTrainToTheRail()之后`
    对于(j=0;j
    为什么一堆货物不能满足您的目的……一条铁路能储存的货物数量是否有上限???似乎您只需要一条铁路,只要它能容纳99节车厢,或者一些列车到达时车厢的顺序是否混乱?由于列车长度限制为100,应该可以使用静态或自动分配,最糟糕的情况是99节车厢(99,98……2,1100),最长的轨道需要99(1,2,…,99100)@ Jasen不会消耗太多内存,它将花费99×99英特(或者99×99短裤)。没有“C/C++”。C是C++,我从来没有见过任何好的标号“C/C++”。如果你想知道如何在C++中编码,你需要学习C++中的代码,而不是C++。当堆栈为空时调用了
    ?它将返回0还是只是运行正常?您是对的,在这种情况下它是UB。在调用
    pop
    后,如果堆栈为空,您应该从
    railStacks
    中删除堆栈。此外,
    j==railStacks.size()
    不再是一种安全检查。您可能只想使用该信息维护一个
    bool
    。因此,我应该创建另一个向量,其中每个元素表示每个堆栈的有效性?使用
    empty
    成员函数。