0

構造体のリンクリストの一部である構造体に値を格納する方法を考えています。私は持っている:

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

class linkedList
{
public:
    void createList();

private:
    polynomial *head;
};

この割り当てでは、入力値を収集するときに解析を行う必要があります。たとえば、スペースで区切られた 2 つの数字を入力します (例: 7 9 または 10 8)。したがって、void createList() では、string を使用して 1 行で読み取り、それを char 配列に変換して値を削除し、その値を polynomial.coefficient と polynomial.power に格納して、リンクされたリストの各ノードを指定します。 .

または、いくつかの情報を検索していて、2 つの int 値を入力し、stringstream を使用してそれらを文字列に変換し、係数とべき乗に格納できるのではないかと考えていました。

いずれにせよ、リンクされたリスト構造体に値を格納するという概念を紹介してもらえますか?

編集:オーバーロードされたコンストラクターを追加しました:

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

};
4

2 に答える 2

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();

Polynomial 構造体のメンバーは文字列である必要はないことに注意してください。cofficient代わりに、入力を解析してasfloatおよびpoweras として保存することができますint(すべての多項式指数は整数です)。

于 2013-02-15T00:43:47.917 に答える