class
  • pointers
  • struct
  • linked-list
  • 2012-03-11 17 views 0 likes 
    0

    入力ファイルを読み込み、読み込んだデータを "リンクリスト"でリンクされたノードに格納するプログラムを作成していました。しかし、私はいくつかのエラーを得ていた。構造体でリンクされたリストを作成する - C++

    コンストラクタ List::List()
    1. 、コンストラクタPolynomial::Polynomial()*((List*)this)->List::list[0] = 0
    2. で '演算子=' の一致なし:*((Polynomial*)this)->Polynomial::poly = (operator new(400u), (<statement>), ...)

    で '演算子=' の一致なし私はどこにいるのかを感じています。配列を通して特定のノードにアクセスしようとすると、私が間違っているところですが、それは分かりません。ここで

    は、コードは次のとおりです。

    #include <iostream> 
    #include <fstream> 
    
    using namespace std; 
    
    enum result{success, failure};       
    
    struct Node 
    { 
    
    double coefficient;       
    int power;        
    
    Node();     
    Node(double coef, int pwr);  
    }; 
    
    struct List 
    { 
    Node *list[100]; 
    
    //Default constructor 
    List(); 
    }; 
    
    Node::Node() 
    { 
    coefficient = 0; 
    power = 0; 
    } 
    
    List::List() 
    { 
    *list[0] = NULL; 
    } 
    
    Node::Node(double coef, int pwr) 
    { 
    coefficient = coef; 
    power = pwr; 
    } 
    
    
        class Polynomial 
        { 
        public: 
        Polynomial();      
        result multiply(Polynomial &p, Polynomial &q); 
        result add(Polynomial p, Polynomial &q); 
        void initialize(ifstream &file); 
        void simplify(Polynomial &var); 
        void print_poly(); 
        ~Polynomial(); 
    
    private: 
        List *poly;       //Store the pointer links in an array 
        Node first_node; 
        int val; 
    }; 
    
    Polynomial::Polynomial() 
    { 
    *poly = new List(); 
    } 
    
    Polynomial::void initialize(ifstream &file) 
    { 
    int y[20]; 
    double x[20]; 
    int i = 0, j = 0; 
    
    //Read from the file 
    file >> x[j]; 
    file >> y[j]; 
    
    first_node(x[j], y[j++]);      //Create the first node with coef, and pwr 
    *poly->list[i] = &first_node;      //Link to the fist node 
    
    //Creat a linked list 
    while(y[j] != 0) 
    { 
        file >> x[j]; 
        file >> y[j]; 
        *poly->list[++i] = new Node(x[j], y[j++]); 
    } 
    
    val = i+1;        //Keeps track of the number of nodes 
    } 
    
    
    Polynomail::result multiply(Polynomial &p, Polynomial &q) 
    { 
    int i, j, k = 0; 
    
    for(i = 0; i < p.val; i++) 
    { 
        for(j = 0; j < q.val; j++) 
        { 
         *poly->list[k] = new Node(0, 0); 
         *poly->list[k].coefficient = (p.poly->list[i].coefficient)*(q.poly->list[j].coefficient); 
         *poly->list[k++].power = (p.poly->list[i].power)+(q.poly->list[j].power); 
        } 
    } 
    
    val = k+1;        //Store the nunber of nodes 
    return success; 
    } 
    
    Polynomial::void simplify(Polynomial &var) 
    { 
    int i, j, k = 0; 
    
    //Create a copy of the polynomial 
    for(j = 0; j < var.val; j++) 
    { 
        *poly->list[j] = new Node(0, 0); 
        *poly->list[j].coefficient = var.poly->list[j].coefficient; 
        *poly->list[j].power = var.poly->list[j].power; 
    } 
    
    //Iterate through the nodes to find entries which have the same power and add them, otherwise do nothing  
    for(k = 0; k < var.val; k++) 
    { 
        for(i = k; i < var.val;) 
        { 
         if(*poly->list[k].power == var.poly->list[++i].power) 
         { 
          if(*poly->list.power[0] == 0) 
          { 
           NULL; 
          } 
          else 
          { 
           *poly->list[k].coefficient = *poly->list[k].coefficient + var.poly->list[i].ceofficient; 
           var.poly->list[i] = Node(0, 0); 
          } 
         } 
        } 
    } 
    } 
    
    Polynomial::void print_pol() 
    { 
    int i = 0; 
    for(i = 0; i < temp.val; i++) 
    { 
        cout << "Coefficient: " << temp.poly->list[i].coefficient << ", and " << "Power: " << temp.poly->list[i].power << endl; 
    } 
    } 
    

    答えて

    0

    問題が間違って間接参照です。 34行目は、おそらくあなたはNode型の変数にNULL値を代入しようと

    list[0] = NULL; // remove the * 
    

    にする必要がありますが、あなたはおそらくノードへポインタを意味します。 非常に同じことが、またラインで63

    真であるライン66 souldおそらくB:

    void Polynomial::initialize(ifstream &file) // start with return type 
    
    関連する問題