2013-02-14 58 views
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; 

}; 
+0

你試圖實際存儲一個值的地方在哪裏? – 2013-02-14 22:54:54

回答

2

你混合C風格的實踐與C++的做法。

在C++中,您通常會將數據從容器中分離出來。看看std::list是如何工作的。

即使你不想進入模板,你仍然可以做到這一點:

struct polynomial { 
    string coefficient; 
    string power; 
}; 

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

如果你真的想擁有head概念,你可以保留一個「假頭」在這裏你存儲一個沒有任何內容的listnode

或者,如果你真的想在polynomialnext指針,你想辦法在現有元素複製沒有的摧毀指針,只是做一個setter函數:

void polynomial::set(const string& inCoeff, const string & inPower); 
+0

有道理! :) – 2013-02-15 02:18:27

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

注意你的多項式結構成員不需要是字符串。相反,您可以解析輸入並將cofficient存儲爲floatpower,並將其存儲爲int(所有多項式指數都是整數)。