2013-10-06 6 views
0

Предположим, что у вас есть два полиномиальных выражения, я пытаюсь закодировать программу, которая выполняет 3 разных операции: 1.match (равенство) 2.sum (добавление) и 3.dot (умножение).оценка выражения в C++ с использованием LinkedList

class Node 
{ 
public: 
int coef; 
int expo; 
Node *next; 
Node(int coef=0, int expo=0, Node *next=NULL) 
{ 
    this->coef = coef; 
    this->expo = expo; 
    this->next = next; 
} 
}; 
// 
class LinkedList 
{ 
public: 
Node *head; 
int size; 
LinkedList() 
{ 
    head = new Node(0, 0, NULL); 
    head->coef = 0; 
    head->expo = 0; 
    head->next = NULL; 
    size = 0; 
} 
int degree(); 
int coefficient(int); 
bool match(LinkedList *, LinkedList*); 
void insert(); 
LinkedList sum(LinkedList *, LinkedList *); 
LinkedList dot(LinkedList *, LinkedList *); 
};LinkedList x, y, z; 

Я также определенная функция memeber, как показано ниже:

bool LinkedList::match(LinkedList *expr1, LinkedList *expr2) 
{ 
// Check if both expressions have a same length 
if (expr1->size != expr2->size) 
{ 
    cout << "The expressions do not match in length." << endl; 
    return false; 
} 
else if (expr1->size == expr2->size) 
{ 
    // Both expressions are the same in length, but not equal 
    while (expr1->head->coef && expr2->head->coef) 
} 
} 

Проблема, я не могу получить доступ к узлам внутри expr1 и expr2, которые указатель указывает на начало expr1 и expr2 Любая помощь?

+0

- это определение узла в том же файле, что и LinkedList.h, и LinkedList.cpp содержит файл .h? похоже, что определение узла было недоступным в функции match() – 4pie0

+0

Определение класса Node и LinkedList находится в том же файле с именем LinkedList.h; и это # ​​включено в файл LinkedList.cpp, содержащий определение функции члена. –

+0

Я не могу воспроизвести ошибку. Что такое сообщение об ошибке? – Beta

ответ

0

только Исправьте Оператор While

while (expr1->head->coef && expr2->head->coef) { 
     // do something       ^
    } 
    ^

также убедитесь, что Node доступен из LinkedList.cpp (так, для примера в LinkedList.h что каст включает в себя)

ошибка была:

main.cpp: In member function ‘bool LinkedList::match(LinkedList*, LinkedList*)’: main.cpp:78: error: expected primary-expression before ‘}’ token main.cpp:78: error: expected ‘;’ before ‘}’ token

также не нужен #include <conio.h> здесь

+0

Вы видели код? не будет ли неприятно обращаться к узлам внутри разыменования списка дважды? –

+0

это ваш код, пожалуйста, просто исправьте это заявление, и ваша проблема должна быть решена. Я взял ваш код и скомпилировал его, он работает – 4pie0

+0

Я понимаю! но есть ли другой способ доступа к узлам внутри без разыменования дважды? –

Смежные вопросы