0

我想知道如何将值存储到作为结构链接列表一部分的结构中。我有:

struct polynomial
{
    polynomial(string newCoefficient, string newPower, polynomial *nextPtr);
    string coefficient;
    string power;
    polynomial *next; 
};

class linkedList
{
public:
    void createList();

private:
    polynomial *head;
};

对于这个赋值,我们需要在收集输入值时进行一些解析。例如,我们要输入两个用空格隔开的数字(例如 7 9 或 10 8)。因此,在 void createList() 中,我想使用字符串读取一行,将其转换为 char 数组以剥离值,然后将该值存储到链表中每个节点的 polynomial.coefficient 和 polynomial.power .

或者,我正在搜索一些信息,我在想也许我可以输入两个 int 值,然后使用 stringstream 将它们转换为字符串并将它们存储为系数和幂。

无论哪种方式,您能帮我介绍一下将值存储到链接列表结构中的概念吗?

编辑:我添加了重载的构造函数:

polynomial:: polynomial ( string newCoefficient, string newPower, polynomial *nextPtr )
{
    coefficient = newCoefficient;
    power = newPower; 
    next = nextPtr; 

};
4

2 回答 2

2

您将 C 风格的练习与 C++ 的练习混合在一起。

在 C++ 中,您通常将数据与容器分开。看看效果如何std::list

即使你不想进入模板,你仍然可以这样做:

struct polynomial {
   string coefficient;
   string power;
};

struct listnode {
   polynomial data;
   listnode *next;
};

如果您真的想拥有这个head概念,您可以保留一个“假头”,在其中存储一个listnode没有任何内容的头。

或者,如果你真的想要next指针polynomial并且你想要一种方法来复制现有元素而不用核对指针,只需创建一个 setter 函数:

void polynomial::set( const string& inCoeff, const string & inPower );
于 2013-02-14T22:58:54.440 回答
0

我测试了以下代码,可能会对您有所帮助:

struct Polynomial {
        string coefficient;
        string power;
        Polynomial* next;

        Polynomial(const string& coeff, const string& pow) : coefficient(coeff), power(pow), next(NULL) {}
};

// linked-list of Polynomials
struct LinkedList {
    Polynomial* head;

    LinkedList() : head(NULL) {}

    // add to end of list        
    void add(const string& coeff, const string& pow) {
        if(head == NULL)
            head = new Polynomial(coeff, pow);
        else {
            Polynomial* n;
            for(n = head; n->next != NULL; n = n->next);
            n->next = new Polynomial(coeff, pow);
        }
    }

    // check if results are correct
    void print() {
        for(Polynomial* n = head; n != NULL; n = n->next)
            cout << n->coefficient << " " << n->power << endl;
    }
};

// somewhere in main()
LinkedList ll;
...
// read input values
ll.add(coeff1, pow1);
ll.add(coeff2, pow2);
ll.add(coeff3, pow3);
// check results
ll.print();

请注意,您的多项式结构成员不必是字符串。相反,您可以只解析您的输入并将其存储cofficientfloat和存储powerint所有多项式指数都是整数)。

于 2013-02-15T00:43:47.917 回答