i have created my code.But my division is not working for longer number.CAn anybody solve this.

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <sstream>
#include <iomanip>

using std::setfill;
using std::setw;

using namespace std;

void subtract (struct head *oprnd1, struct head *oprnd2, struct head *result);
void add (struct head *oprnd1, struct head *oprnd2, struct head *result);

struct node
{
	long int data;
	struct node *llink;
	struct node *rlink;
	node ()
	{
		data = 0;
		llink = NULL;
		rlink = NULL;
	}
};

struct head
{
	int noofdigit;
	char sign;
	struct node *left;
	struct node *right;
	head ()
	{
		noofdigit = 0;
		sign=0;
		left = NULL;
		right = NULL;
	}
};

void makenull (struct head *temphead)
{
	struct node *ptr;
	ptr = temphead->right;

	free (temphead);
	while (ptr->rlink != NULL)
	{
		free (ptr);
		ptr = ptr->rlink;
	}
}

char sign (struct head *temphead)
{
	return (temphead->sign);
}

int digits (struct head *temphead)
{
	return (temphead->noofdigit);
}

node* firstright (struct head *temphead)
{
	return (temphead->left);
}

node* firstleft (struct head *temphead)
{
	return (temphead->right);
}

node* nextright (struct node *tempnode)
{
	return (tempnode->rlink);
}

node* nextleft (struct node *tempnode)
{
	return (tempnode->llink);
}

void insertright (struct head *temphead, struct node *tempnode)
{
	struct node *rightmost;
//	cout <<"insertright  "<<tempnode->data<<endl;
	if ((temphead->left == NULL) && (temphead->right == NULL))
	{
		temphead->right = tempnode;
		temphead->left = tempnode;
//		tempnode->llink = temphead;
//		tempnode->rlink = NULL;
	}
	else
	{
		rightmost = temphead->left;
//		cout<<"insertright:rightmost="<<rightmost->data<<endl;
		rightmost->rlink = tempnode;
		tempnode->llink = rightmost;
		tempnode->rlink = NULL;
		temphead->left = tempnode;
//		cout<<"insertright:tempnode created "<<endl;
	}
}

void insertleft (struct head *temphead, struct node *tempnode)
{
	struct node *leftmost;
//	cout <<"insertleft "<<tempnode->data<<endl;
	if ((temphead->left == NULL) && (temphead->right == NULL))
	{
		temphead->right = tempnode;
		temphead->left = tempnode;
//		tempnode->rlink = NULL;
	}
	else
	{
		leftmost = temphead->right;
//		cout<<"insertleft:leftmost="<<leftmost->data<<endl;
		leftmost->llink = tempnode;
		tempnode->rlink = leftmost;
		tempnode->llink = NULL;
		temphead->right = tempnode;
//		cout<<"insertleft:tempnode created"<<endl;
	}
}

int overflow (struct node *tempnode)
{
	long int ovrflwdgt = 0;

	ovrflwdgt = tempnode->data / 100000000;
	if (ovrflwdgt != 0)
	{
		tempnode->data = tempnode->data - (ovrflwdgt * 100000000);
	}

	return ovrflwdgt;
}

void createlist (string num, struct head *temphead)
{
	struct node *tempnode;
	string tempnum,t1;
	int numnodes8,remnodes8,nodenum,i;
//	stringstream temps;

	temphead->noofdigit = num.length () - 1;
	temphead->sign = num[0];
//	cout << temphead->noofdigit <<endl;
//	cout << temphead->sign <<endl;

	tempnum = num.substr (1, temphead->noofdigit);
//	tempnum = tempnum.reverse();
//	cout <<"tempnum = "<<tempnum<<endl;
	numnodes8 = temphead->noofdigit / 8;
	remnodes8 = temphead->noofdigit % 8;
//	cout <<"numnodes8 = "<<numnodes8<<endl;
//	cout <<"remnodes8 = "<<remnodes8<<endl;

	if (remnodes8 > 0)
	{
	t1 = tempnum.substr(0,remnodes8);
        stringstream temps(t1);
        temps >> nodenum;
//        cout <<"nodenum="<<nodenum<<endl;

	tempnode = new struct node;
	tempnode->data = nodenum;
	insertright (temphead,tempnode);
	}
	for (i=remnodes8;i<tempnum.length();i=i+8)
	{
		t1 = tempnum.substr(i,8);
//		cout <<"t1="<<t1<<endl;
		stringstream temps(t1);
		temps >> nodenum;
//		cout <<"remnode nodenum="<<nodenum<<endl;
		tempnode = new struct node;
		tempnode->data = nodenum;
		insertright (temphead,tempnode);
	}

}

int bigger (struct head *head1, struct head *head2)
{
	struct node *ptr1, *ptr2;

//	cout << "oprnd1 numdigit "<<head1->noofdigit<<" oprnd2 "<<head2->noofdigit<<endl;
	if (head1->noofdigit > head2->noofdigit)
	{
//		cout <<"big: oprnd1 big"<<endl;
		return 1;
	}
	else if (head1->noofdigit < head2->noofdigit)
	{
//		cout <<"big: oprnd2 big"<<endl;
		return 0;
	}
	else
	{
//		cout <<"big same size"<<endl;
		ptr1 = head1->right;
		ptr2 = head2->right;

		while (ptr1 != NULL && ptr2 != NULL)
		{
//			cout <<"big="<<ptr1->data<<" "<<ptr2->data<<endl;
			if (ptr1->data > ptr2->data)
			{
				return 1;
			}
			else if (ptr1->data < ptr2->data)
			{
				return 0;
			}
			else
			{
				ptr1 = ptr1->rlink;
				ptr2 = ptr2->rlink;
			}
		}
	}
	return 1;
}

int finddigit (struct head *head1)
{
	int count1=0;
	long int num;
	struct node *ptr;

	ptr = new struct node;
	ptr = firstleft (head1);
//	cout <<"IN Find digit"<<endl;
	while (ptr != NULL)
	{
		num = ptr->data;
//		cout <<"num="<<num<<endl;
		while (num > 0)
		{
			count1++;
			num = num / 10;
		}
		ptr = ptr->rlink;
	}

//	cout<<"NUM digits="<<count1<<endl;
	return count1;
}

void display (struct head *head1)
{
	struct node *ptr;
//	cout <<"DISPLAY"<<endl;
	if (head1->right != NULL && head1->left != NULL)
	{
	ptr = head1->right;
//	cout <<"head1="<<head1->noofdigit<<endl;
//	cout <<"NUMBER"<<endl;
	cout << head1->sign;
	cout << ptr->data;
	ptr = ptr->rlink;
	cout << right;
	while (ptr != NULL)
	{
		cout.fill('0');
		cout << setw(8) << dec;
		cout << ptr->data;
		ptr = ptr->rlink;
	}
	cout << endl;
	}

}

void subtract (struct head *oprnd1, struct head *oprnd2, struct head *result)
{
	struct node *n1, *n2, *rslt;
	struct head *tempswap;
	long int diff, carryover = 0;

//	cout<<"IN SUBTRACT"<<endl;

	if (sign (oprnd1) == sign (oprnd2))
	{
		if (bigger (oprnd2,oprnd1) == 1)
		{
//			cout <<"oprnd2 is bigger"<<endl;
			tempswap = oprnd2;
			oprnd2 = oprnd1;
			oprnd1 = tempswap;
			if (result->sign == '-' || result->sign == '+')
			{
//				cout <<"same sign"<<endl;
			}
			else
			{
//				cout <<"diff sign"<<endl;
				result->sign = sign (oprnd2);
			}
//			cout << "bigger oprnd2"<<endl;
		}
		else
		{
			if (result->sign == '-' || result->sign == '+')
			{
			}
			else
			{
				result->sign = sign (oprnd1);
			}
		}
		n1 = firstright (oprnd1);
		n2 = firstright (oprnd2);

//		cout<<"n1="<<n1->data<<" n2="<<n2->data<<endl;

		while (n1 != NULL && n2 != NULL)
		{
			if ((n1->data - carryover) >= n2->data)
			{
				diff = (n1->data - carryover) - n2->data;
//				cout << "diff="<<diff<<endl;
				rslt = new struct node;
				rslt->data = diff;
				insertleft (result, rslt);
			}
			else
			{
				diff = (100000000 + n1->data - carryover) - n2->data;
//				cout <<"less diff="<<diff<<endl;
				rslt = new struct node;
				rslt->data = diff;
				insertleft (result, rslt);
				carryover = 1;
			}
			n1 = nextleft (n1);
			n2 = nextleft (n2);

		}
	}
	else
	{
		if (bigger (oprnd1, oprnd2) == 1)
		{
			if (sign (oprnd1) == '+')
			{
				result->sign = sign (oprnd1);
				oprnd2->sign = '+';
				add (oprnd1, oprnd2, result);
			}
			else
			{
				result->sign = sign (oprnd1);
				oprnd1->sign = '+';
				add (oprnd1, oprnd2, result);
			}
		}
		else
		{
			if (sign (oprnd2) == '+')
			{
				result->sign = sign (oprnd2);
				oprnd1->sign = '+';
				subtract (oprnd1, oprnd2, result);
			}
			else
			{
				result->sign = sign (oprnd2);
				oprnd2->sign = '+';
				add (oprnd1, oprnd2, result);
			}

		}
	}
	display (result);
}


void add (struct head *oprnd1, struct head *oprnd2, struct head *result)
{
	struct node *n1, *n2, *rslt;
	struct head *tempswap;
	long int sum, ovrflwdgt = 0;

//	cout<<"IN ADD"<<endl;

	if (sign (oprnd1) == sign (oprnd2))
	{
		cout <<"add in1"<<endl;
		n1 = firstright (oprnd1);
//		cout <<"in1:n1="<<n1->data<<endl;
		n2 = firstright (oprnd2);
//		cout <<"in1:n2="<<n2->data<<endl;

		cout<<"n1="<<n1->data<<" n2="<<n2->data<<endl;

		while (n1 != NULL && n2 != NULL)
		{
			sum = n1->data + n2->data + ovrflwdgt;
//			cout<<"sum="<<sum<<endl;
			rslt = new struct node;
			rslt->data = sum;
//			cout<<"result="<<rslt->data<<endl;
			insertleft (result,rslt);
//			cout<<"after insertleft"<<endl;
			ovrflwdgt = overflow(rslt);
//			cout<<"overflow="<<ovrflwdgt<<endl;
			n1 = nextleft (n1);
			n2 = nextleft (n2);
		}

		while (n1 != NULL)
		{
			sum = n1->data + ovrflwdgt;
			rslt = new struct node;
			rslt->data = sum;
			insertleft (result, rslt);
			ovrflwdgt = overflow (rslt);
			n1 = nextleft (n1);
		}

		while (n2 != NULL)
		{
			sum = n2->data + ovrflwdgt;
			rslt = new struct node;
			rslt->data = sum;
			insertleft (result, rslt);
			ovrflwdgt = overflow (rslt);
			n2 = nextleft (n2);
		}

		if (ovrflwdgt > 0)
		{
			rslt = new struct node;
			rslt->data = ovrflwdgt;
//			cout<<"overflow present"<<endl;
			insertleft (result, rslt);
		}

		if (result->sign == '-' || result->sign == '+')
		{
		}
		else
		{
			result->sign = sign (oprnd1);
		}

	}
	else
	{
		if (bigger (oprnd2,oprnd1) == 1)
		{
			tempswap = oprnd2;
			oprnd2 = oprnd1;
			oprnd1 = tempswap;
			result->sign = sign (oprnd2);
			oprnd1->sign = '+';
			oprnd2->sign = '+';
//			cout <<"add bigger oprnd2"<<endl;
		}
		else
		{
			result->sign = sign (oprnd1);
			oprnd1->sign = '+';
			oprnd2->sign = '+';
//			cout <<"add bigger oprnd1"<<endl;
		}
		subtract (oprnd1,oprnd2,result);
	}
	display (result);
}

struct head* multiply (struct head *oprnd1, struct head *oprnd2, struct head *result)
{
	struct node *n1, *n2, *rslt;
	struct head *temp1,*temp2, *result1, *temp11, *temp12;;
	long int ovrflwdgt = 0, digitsnode = -1,i,digits=1, num1, num2, num, first=0, rem, firstnode = 0,nodenum=0;
	long long int mult;


//	cout <<"IN MULTIPLY"<<endl;

	n1 = firstright (oprnd1);
	n2 = firstright (oprnd2);

	cout <<"right "<<n1->data<<" "<<n2->data<<endl;
//	digitsnode = 0;
	while (n1 != NULL)
	{
		cout<<"in1"<<endl;
//		n2 = firstright (oprnd2);
		digitsnode=nodenum;
		nodenum++;
//		cout<<"in1:digitsnodes="<<digitsnode<<endl;
		while (n2 != NULL)
		{
//			cout<<"in2 n2="<<n2->data<<"n1="<<n1->data<<endl;
/*			temp1 = new struct head;
			temp1->sign = '+';
			temp2 = new struct head;
			temp2->sign = '+';
			for (i=0;i<digitsnode;i++)
			{
				rslt = new struct node;
				rslt->data = 0;
				insertleft (temp1,rslt);
			}
*/
//			cout <<"MULTIPLY: calling multiplynodes"<<endl;

//			multiplynodes (n1,n2,result1);

//			result1 = new struct head;
//			result1->sign = '+';

			result1 = new struct head;
			result1->sign = '+';
			result1->left = NULL;
			result1->right = NULL;

			num1 = n1->data;
			num2 = n2->data;

//			cout<<"num1="<<num1<<" num2="<<num2<<endl;


			digits = 1;

			first = 0;
			while (num1 > 0)
			{
//		cout<<"multiplynode:first result1 "<<endl;
//		display (result1);

				temp11 = new struct head;
				temp12 = new struct head;
				temp11->sign = '+';
				temp12->sign = '+';

				num = num1 % 10;
				mult = num2 * num;
//				if (digits > 100)
//				{
					rem = (mult % (100000000 / digits));
					rslt = new struct node;
					cout<<"rem="<<rem<<" digits="<<digits<<endl;
					rslt->data = rem * digits;
//					cout<<"calling insertleft"<<endl;
					insertleft (temp11, rslt);
					ovrflwdgt = mult / (100000000 / digits);
//					cout<<"overflow="<<ovrflwdgt<<endl;
					if (ovrflwdgt > 0)
					{
						rem = ovrflwdgt;
						rslt = new struct node;
						rslt->data = rem;
//						cout<<"Calling insertleft overflow"<<endl;
						insertleft (temp11, rslt);
					}
//				}

				if (first == 0)
				{
					temp12 = temp11;
					first = 1;
				}
				else
				{
//					cout<<"calling add in multiplynodes"<<endl;
					display (temp11);
					display (result);
					add (temp11, result1, temp12);
				}

				num1 = num1 / 10;
				digits = digits * 10;
				result1 = temp12;


			}

//			cout<<"MULTIPLY: result1 n1 n2 "<<n1->data<<" "<<n2->data<<endl;
			display (result1);

			if (firstnode == 0)
			{
//		here		temp1 = result1;
				result = result1;
				firstnode = 1;
			}
			else
			{

//				cout <<"MULTIPLY: call add temp1 result digitsnode="<<digitsnode<<endl;

				for (i=0;i<digitsnode;i++)
				{
					rslt = new struct node;
					rslt->data = 0;
					insertright (result1,rslt);
				}

//		here		display (temp1);
				display (result1);
				temp2 = new struct head;
				temp2->sign = '+';
				add (result,result1,temp2);
// here				temp1 = temp2;
				result = temp2;
//				cout<<"check this result"<<endl;display (result);
			}
//			makenull (temp1);
//			makenull (temp2);
			digitsnode++;
			n2 = nextleft (n2);
		}
//		cout <<"outside n2 loop"<<endl;
		n1 = nextleft (n1);
		n2 = firstright (oprnd2);
//		cout<<"checking n2="<<n2->data<<endl;
//		nodenum++;
//		digitsnode = 0;
	}

//	digitsnode=0;
//	result = temp1;
//	cout <<"IN MULTIPLY FINAL="<<endl;
//	display (result1);
//	display (result);
	return result;
}

long int divide (struct head *oprnd1, struct head *oprnd2, struct head *result)
{
	struct node *n1, *n2, *rslt;
	struct head *temp1, *temp2, *result1, *zerolist;
	long int num1, num2, quotient=0;

//	cout <<"IN DIVIDE"<<endl;

//	n1 = firstright (oprnd1);
//	n2 = firstright (oprnd2);

	temp1 = new struct head;
	temp2 = new struct head;
	temp1 = oprnd1;
	temp2 = oprnd2;

//	cout <<"temp1"<<endl;
	display (temp1);
//	cout <<"temp2"<<endl;
	display (temp2);

	zerolist = new struct head;
	rslt = new struct node;
	rslt->data = 0;
	insertleft (zerolist, rslt);

	do
	{
		result1 = new struct head;
		result1->sign = '+';
//		cout<<"calling subtract temp1 temp2"<<endl;
		display (temp1);
		display (temp2);
		subtract (temp1, temp2, result1);

		result1->noofdigit = finddigit (result1);
		result1->sign = '+';
//		cout <<"divide result1="<<endl;display (result1);
		temp1 = result1;
		temp2 = oprnd2;
		quotient++;
	}while (bigger (result1, oprnd2) == 1);

//	cout <<"Quotient="<<quotient<<endl;
	return quotient;
}

struct head* power (struct head *oprnd1, int i)
{
	struct head *n1, *n2, *result1;
	int j,x=1,num;


//	cout <<"IN POWER"<<endl;
	num = i;
	n1 = new struct head;
	n2 = new struct head;
	result1 = new struct head;

	n1 = oprnd1;
	n2 = oprnd1;
	while (num > 1)
	{
//		cout<<"POWER num="<<num<<endl;
		display (n1);
		result1 = new struct head;
		result1 = multiply (n1,n1,result1);
//		cout<<"POWER result1"<<endl;
		display (result1);
		n1 = result1;
		num = num / 2;
		x = x * 2;
	}

//	cout<<"POWER x="<<x<<endl;

//	result1 = new struct head;
	for (j=0;j<(i-x);j++)
	{
//		cout<<"POWER in"<<endl;
		display (n1);
		display (n2);
		result1 = new struct head;
		result1 = multiply (n1,n2,result1);
//		cout<<"result1"<<endl;display (result1);
		n1 = result1;
		n2 = oprnd1;
	}

//	cout<<"POWER is"<<endl;
	display (result1);
	return result1;
}

int main ()
{
	char *in;
	int ch = 0, powernum;
	string num1,num2;
	long int quot;
	struct node *rslt;
	struct head *oprnd1,*oprnd2,*result,*temp;
	struct head *listA,*listB,*listC,*listD,*listE,*listF,*listG,*listH,*listI,*listJ,*listK,*listL,*listM,*listN,*listO,*listP,*listQ,*listR,*listS,*listT,*listU,*listV,*listW,*listX,*listY,*listZ;
//	cout <<"hello"<<endl;
	while (ch != 7)
	{
		cout <<"1 Add"<<endl;
		cout <<"2 Subtract"<<endl;
		cout <<"3 Multiply"<<endl;
		cout <<"4 Divide"<<endl;
		cout <<"5 Pow"<<endl;
		cout <<"6 Using given data"<<endl;
		cout <<"7 Exit"<<endl;
		cout <<"Enter your choice: ";
		cin >>ch;
		cout <<ch<<endl;

		switch (ch)
		{
			case 1:
				cout <<"Addition!"<<endl;
//				getline (cin, num1);
				cout <<"Enter operand1: ";
				cin >> num1;
				cout <<num1<<endl;
				oprnd1 = new struct head;
				createlist (num1,oprnd1);
//				cout<<"oprnd1"<<oprnd1->noofdigit<<endl;
				display (oprnd1);
				cout <<"Enter operand2: ";
				cin >> num2;
				oprnd2 = new struct head;
				createlist (num2,oprnd2);
				display (oprnd2);
				result = new struct head;
				add (oprnd1,oprnd2,result);
				cout<<"ADD FINAL"<<endl;display (result);
				break;
        	case 2:
            	cout <<"Subtraction!"<<endl;
            	cout <<"Enter operand1: ";
				cin >> num1;
				cout <<num1<<endl;
				oprnd1 = new struct head;
				createlist (num1,oprnd1);
//				cout<<"oprnd1"<<oprnd1->noofdigit<<endl;
				display (oprnd1);
				cout <<"Enter operand2: ";
				cin >> num2;
				oprnd2 = new struct head;
				createlist (num2,oprnd2);
				display (oprnd2);
				result = new struct head;
				subtract (oprnd1,oprnd2,result);
				cout<<"SUBTRACT FINAL"<<endl;display (result);
            	break;
	        case 3:
        		cout <<"Multiplication!"<<endl;
            	cout <<"Enter operand1: ";
				cin >> num1;
				cout <<num1<<endl;
				oprnd1 = new struct head;
				createlist (num1,oprnd1);
//				cout<<"oprnd1"<<oprnd1->noofdigit<<endl;
				display (oprnd1);
				cout <<"Enter operand2: ";
				cin >> num2;
				oprnd2 = new struct head;
				createlist (num2,oprnd2);
				display (oprnd2);
				result = new struct head;
				result->sign = '+';
				temp = new struct head;
				temp=multiply (oprnd1,oprnd2,result);
				cout<<"MULTIPLY FINAL"<<endl;display (result);cout<<"temp"<<endl;display (temp);
            	break;
	        case 4:
        		cout <<"Division!"<<endl;
            	cout <<"Enter operand1: ";
				cin >> num1;
				cout <<num1<<endl;
				oprnd1 = new struct head;
				createlist (num1,oprnd1);
//				cout<<"oprnd1"<<oprnd1->noofdigit<<endl;
				display (oprnd1);
				cout <<"Enter operand2: ";
				cin >> num2;
				oprnd2 = new struct head;
				createlist (num2,oprnd2);
				display (oprnd2);
				result = new struct head;
				result->sign = '+';
				quot = divide (oprnd1,oprnd2,result);
				cout<<"DIVISION FINAL="<<quot<<endl;
            	break;
	        case 5:
        		cout <<"Power!"<<endl;
        		cout <<"Enter the number: ";
        		cin >> num1;
        		cout <<num1<<endl;
        		oprnd1 = new struct head;
        		createlist (num1, oprnd1);
//        		cout <<"oprnd1"<<oprnd1->noofdigit<<endl;
        		display (oprnd1);
        		cout <<"Enter the power: ";
        		cin >> powernum;
        		result = new struct head;
				result->sign = '+';
        		result = power (oprnd1, powernum);
        		cout<<"POWER OUT"<<endl;display(result);
            	break;
	        case 6:
        		cout <<"Given!"<<endl;

        		listA = new struct head;
        		listB = new struct head;
        		listC = new struct head;
        		listD = new struct head;
        		listE = new struct head;
        		listF = new struct head;
        		listG = new struct head;
        		listH = new struct head;
        		listI = new struct head;
        		listJ = new struct head;
        		listK = new struct head;
        		listL = new struct head;
        		listM = new struct head;
        		listN = new struct head;
        		listO = new struct head;
        		listP = new struct head;
        		listQ = new struct head;
        		listR = new struct head;
        		listS = new struct head;
        		listT = new struct head;
        		listU = new struct head;
        		listV = new struct head;
        		listW = new struct head;
        		listX = new struct head;
        		listY = new struct head;
        		listZ = new struct head;

        		rslt = new struct node;
        		rslt->data = 22222222;
        		insertleft (listA, rslt);
        		rslt = new struct node;
				rslt->data = 55555555;
        		insertleft (listB, rslt);
        		rslt = new struct node;
				rslt->data = 24681357;
        		insertleft (listC, rslt);
        		rslt = new struct node;
				rslt->data = 18027036;
        		insertleft (listD, rslt);

        		listE->sign = '+';
        		cout<<"Given E = A * D"<<endl;
        		listE = multiply (listA,listD,listE);
        		cout<<"listE"<<endl;
        		display (listE);

        		listF->sign = '+';
        		cout<<"F = A ^ 2"<<endl;
        		listF = power (listA,2);
        		cout<<"listF"<<endl;
				display (listF);

				listG->sign = '+';
				cout<<"G = D ^ 2"<<endl;
				listG = power (listD,2);
				cout<<"listG"<<endl;
				display (listG);

				listH->sign = '+';
				cout<<"H = B * C"<<endl;
				listH = multiply (listB,listC,listH);
				cout<<"listH"<<endl;
				display (listH);

				listI->sign = '+';
				cout<<"I = A + D"<<endl;
				add (listA,listD,listI);
				cout<<"listI"<<endl;
				display (listI);

				listJ->sign = '+';
				cout<<"J = I ^ 2"<<endl;
				listJ = power (listI,2);
				cout<<"listJ"<<endl;
				display (listJ);

				listK->sign = '+';
				cout<<"K = J - F"<<endl;
				display (listJ);display(listF);
				subtract (listJ,listF,listK);
				cout<<"listK"<<endl;
				display (listK);

				listL->sign = '+';
				cout<<"Given L = K - G"<<endl;
				subtract (listK, listG, listL);
				cout<<"listL"<<endl;
				display (listL);

				listM->sign = '+';
				cout<<"M = L / E"<<endl;
				quot = divide (listL,listE,listM);
				rslt = new struct node;
				rslt->data = quot;
				insertleft (listM,rslt);
				cout<<"listM"<<endl;
				display(listM);

				cout<<"Delete"<<endl;
				makenull (listF);
				makenull (listG);
				makenull (listI);
				makenull (listJ);
				makenull (listK);
				makenull (listL);
				makenull (listM);

				listN->sign = '+';
				cout<<"N = E ^ 2"<<endl;
				listN = power (listE,5);
				cout<<"listN"<<endl;
				display (listN);

				listO->sign = '+';
				cout<<"O = H ^ 3"<<endl;
				listO = power (listH, 3);
				cout<<"listO"<<endl;
				display (listO);

				listP->sign = '+';
				cout<<"P = N - O"<<endl;
				subtract(listN,listO,listP);
				cout<<"listP"<<endl;
				display (listP);


				listQ->sign = '+';
				cout<<"Q = N ^ 2"<<endl;
				listQ = power (listN,2);
				cout<<"listQ"<<endl;
				display (listQ);

				listR->sign = '+';
				cout<<"R = O ^ 2"<<endl;
				listR = power (listO,2);
				cout<<"listR"<<endl;
				display (listR);

				listS->sign = '+';
				cout<<"S = Q - R"<<endl;
				subtract(listQ,listR,listS);
				cout<<"lists"<<endl;
				display (listS);

				listT->sign = '+';
				cout<<"T = S / P"<<endl;
				quot = divide (listS,listP,listT);
				rslt = new struct node;
				rslt->data = quot;
				insertleft (listT,rslt);
				cout<<"listT"<<endl;
				display (listT);

				listU->sign = '+';
				cout<<"U = T - O"<<endl;
				subtract(listT,listO,listU);
				cout<<"listU"<<endl;
				display (listU);

				listV->sign = '+';
				cout<<"V = U - N"<<endl;
				subtract(listU,listN,listV);
				cout<<"listV"<<endl;
				display (listV);

				listW->sign = '+';
				cout<<"W = C ^ 2"<<endl;
				listW = power (listC,2);
				cout<<"listW"<<endl;
				display (listW);

				listX->sign = '+';
				cout<<"X = B ^ 2"<<endl;
				listX = power (listB,2);
				cout<<"listX"<<endl;
				display (listX);

				listY->sign = '+';
				cout<<"Y = W - X"<<endl;
				subtract(listW,listX,listY);
				cout<<"listY"<<endl;
				display (listY);

				listZ->sign = '+';
				cout<<"Z = C + B"<<endl;
				add(listC,listB,listZ);
				cout<<"listZ"<<endl;
				display (listZ);

				listH = new struct head;
				listH->sign = '+';
				cout<<"H = Y / Z"<<endl;
				quot = divide (listY,listZ,listH);
				rslt = new struct node;
				rslt->data = quot;
				insertleft(listH,rslt);
				cout<<"listH"<<endl;
				display (listH);

				listF = new struct head;
				listF->sign = '+';
				cout<<"F = N ^ 5"<<endl;
				listF = power (listN,5);
				cout<<"listF"<<endl;
				display (listF);

				listG = new struct head;
				listG->sign = '+';
				cout<<"G = E ^ 25"<<endl;
				listG = power (listE,25);
				cout<<"listG"<<endl;
				display (listG);

				listI = new struct head;
				listI->sign = '+';
				cout<<"I = F / N"<<endl;
				quot = divide (listF,listN,listI);
				rslt = new struct node;
				rslt->data = quot;
				insertleft(listI,rslt);
				cout<<"listI"<<endl;
				display (listI);

				listJ = new struct head;
				listJ->sign = '+';
				cout<<"J = G / I"<<endl;
				quot = divide (listG,listI,listJ);
				rslt = new struct node;
				rslt->data = quot;
				insertleft(listJ,rslt);
				cout<<"listJ"<<endl;
				display (listJ);

				listM = new struct head;
				listM->sign = '+';
				cout<<"M = N ^ 10"<<endl;
				listM = power (listN,10);
				cout<<"listM"<<endl;
				display (listM);

				makenull (listP);
				listP = new struct head;
				listP->sign = '+';
				cout<<"P = G ^ 2"<<endl;
				listP = power (listG,2);
				cout<<"listP"<<endl;
				display (listP);

				makenull (listQ);
				makenull (listR);

				listQ = new struct head;
				listQ->sign = '+';
				cout<<"Q = P - M"<<endl;
				subtract(listP,listM,listQ);
				cout<<"listQ"<<endl;
				display (listQ);

				listR = new struct head;
				listR->sign = '+';
				cout<<"R = J - M"<<endl;
				subtract(listJ,listM,listR);
				cout<<"listR"<<endl;
				display (listR);


            	break;
		}
	}
}

Alas, probably not only division is not working for ALL numbers in this code...
Can you explain what are you doing?

This article has been dead for over six months. Start a new discussion instead.