Hello, I am currently working on a project that requires me to write write a program that adds, subtracts, multiplies and evaluates polynomials. I am required to use linked lists of nodes. I am stuck on writing the code to input the polynomial. I understand how I will input each term of the polynomial into nodes, but I don't understand how to retain the entire polynomial from the user input. The user input should be as follows: (EX: 2x^2 + 2x^1 - 5). Please understand that I am not asking any of you to write this program for me, I am simply stuck on how to handle the input from the user. I have thought of using an array, but I'm pretty sure I'm supposed to input the polynomial directly into a linked list of terms(nodes). Here is the code I have so far:

using namespace std;
// Node structure (each node represents a term in a polynomial)
struct Node
	int coeff, exp;
	Node* link;

typedef Node* NodePtr;
// Defines NodePtr to point to structure.

// Poly Class (represents an entire polynomial consisting of terms)
class Poly
		friend istream& operator >>(istream& ins, Poly& f);
		// Handles input
		friend ostream& operator >>(ostream& outs, Poly& f);
		// Handles output
		// Default Constructor
		void create_node();
		// Creates nodes based on how many men are input in line.
		void create_add_node();
		// Creates additional nodes.
		//void choose_winner();
		// Cycles through the linked list (men in line) and eliminates every
		// third man until node = node->link (one man is left).
		Node* link;
		NodePtr front, current;
		int c, e;
		char ch, ch2;
		string input;

int main()
	Poly test;
	cin >> test;

Poly::Poly() : link(NULL), current(NULL), front(NULL), c(0), e(0)
istream& operator >>(istream& ins, Poly& f)
	ins >> f.c >> f.ch >> f.ch2 >> f.e; 
        // Inputs first term.
	while(ins != '\0')
	ins >> f.c >> f.ch >> f.ch2 >> f.e;
	return ins;
ostream& operator >>(ostream& outs, Poly& f)
	return outs;
void Poly::create_node()
	front = new Node;
	front->coeff = c; // Creates first node.
	front->exp = e;
	front->link = NULL;
	current = front; // Sets current pointer to the first node.
	cout << front->coeff;
void Poly::create_add_node()
	NodePtr tmp = new Node;
	tmp->coeff = c;
	tmp->exp = e;
	tmp->link = NULL;
	current->link = tmp;
	current = tmp;

I am assuming that I am over thinking the process. I appreciate your time and appreciate any input you may have. Kind Regards...

8 Years
Discussion Span
Last Post by Lerner

If the polynomial is restricted to a single variable polynomial then each node needs to have a coefficient and an exponent. You can recieve user input for each, individually or you can accept the full polynomial from the user as a string and break it down term by term until you reach that point. Once you have the coefficient and exponent for a term you can create a new node and add it to the list of nodes. You may or may not want a function to simply the polynomial into standard form and you may or may not want to include nodes that have zero for the coefficient.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.