链接列表数组麻烦C ++

时间:2015-03-18 23:24:00

标签: c++ arrays list

首先,我是C ++的新手,主要使用Java,JavaScript,C#和Scala等语言。

我正在尝试编写一个程序,它将从控制台获取一个数字,这将确定团队的数量(以链接列表的形式(例如,numTeams = 5;表示5个链接列表))然后将采取在输入之后,第一个值将被添加到第一个链接列表,然后第二个值将添加到第二个链接列表,依此类推,直到所有i值分配给所有n个团队。此外,当所有链接列表都填充了相同数量的值时,它将在第一个链接列表中再次开始,并再次通过它们将值添加到每个列表。

我知道我必须制作一系列链接列表,但我不确定如何进一步发展我所说的以我所说的方式分配价值。

非常感谢任何帮助!

这是我到目前为止所做的:

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
using namespace std;

class balanceTeams{

    // Struct inside the class LinkedList
    struct Node {

          int x;
          Node *next;

     };


public:

  // constructor
  balanceTeams(){

       head = NULL; // set head to NULL

    }

  // New value at the beginning of the list
  void addUnit(int val){

        Node *n = new Node();   // create new Node
        n->x = val;             // set value
        n->next = head;         // make the node point to the next node.
        //  If the list is empty, this is NULL
        head = n;               // head point at the new node.

     }

  // returns the first element in the list and deletes the Node.
  int popUnit(){

          Node *n = head;
          int ret = n->x;

          head = head->next;
          delete n;
          return ret;

     }

  //void swapUnit()
  //void moveUnit()

private:

    Node *head; // pointer to the first Node

  };


int main() {


    string line;
    int numTeams = 0;
    int lines = 0;
    vector<balanceTeams> vect;
    //int team_size = lines / numTeams;


  getline(cin, line);
      numTeams = atoi (line.c_str());
      vect.resize(numTeams);
      cout << "Num teams: " << numTeams << endl;


  while (getline(cin, line)) {

      cout << "Unit " << line << endl;

  }

  return 0;

}

编辑:三个错误:

balanceTeams.cpp: In function ‘int main()’:
balanceTeams.cpp:72:23: error: no matching function for call to  
  ‘balanceTeams::addUnit(std::string&)’
   vect[i].addUnit(line);
                       ^
balanceTeams.cpp:72:23: note: candidate is:
balanceTeams.cpp:25:7: note: void balanceTeams::addUnit(int)
  void addUnit(int val){
       ^
balanceTeams.cpp:25:7: note:   no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘int’

1 个答案:

答案 0 :(得分:0)

您的代码中似乎缺少的是:

1)一些错误检查。输入的团队数量必须至少为一个。如果有人输入0或负值,则显示错误消息并挽救。

2)初始化

size_t i=0;

在现有循环之前。

3)在循环内部,解析现有值,然后调用

vect[i].addUnit(new_value);

4)在循环结束时递增索引,为下一个迭代器

i=(i+1) % vect.size();

似乎就是这样。每次循环时,您都要为下一个向量添加一个值。