IT 프로그래밍/자료구조

[자료구조] Polynomial

기술1 2024. 10. 1. 17:30
반응형

add_term

다항식 poly에 새로운 하나의 항을 추가하는 함수입니다.

 

두 가지 경우가 있습니다

  1. 추가하려는 항과 동일 차수의 항이 이미 있는 경우 : 기존 항의 계수만 변경
  2. 그렇지 않은 경우 : 새로운 항을 삽입(형들은 차수의 내림차순으로 항상 정렬 됨)

void add_term(Polynomial& poly, int c, int e)
{
	if (c == 0)
		return;
	Term* p = poly.first, * q = nullptr;
	while (p != nullptr && p->expo > e)
	{
		q = p;
		p = p->next;
	}
	if (p != nullptr && p->expo == e)
	{
		p->coef += c;
		if (p->coef == 0)
			if (q == nullptr)
				poly.first = p->next;
			else
				q->next = p->next;
		poly.size--;
		delete p;
	}
	return;
}

 

int main()
{
	string command, arg1, arg2, arg3;
	while(1)
	{
		cout << "$ ";
		cin >> command;
		if (command == "print")
		{
			cin >> arg1;
			handle_print(arg1[0]);
		}
		else if (command == "calc")
		{
			cin >> arg1 >> arg2;
			handle_calc(arg1[0], stoi(arg2));
		}
		else if (command == "define")
		{
			cin >> arg1;
			Polynomial pol(arg1[0]);
			insert_polynomial(pol);
		}
		else if (command == "add")
		{
			cin >> arg1 >> arg2 >> arg3;
			handle_add(arg1[0], stoi(arg2), stoi(arg3));
		}
		else if (command == "exit")
			break;
	}
}
반응형