데이터 구조 일원 다항식 더하기
2428 단어 데이터 구조일원 다항식 더하기
덧 붙 인 부분 은 바로 새로운 체인 시트 로 저장 하 는 것 이다. '단일 체인 시트 꼬리 에 꽂 는 방법 과 차이 가 많 지 않다. 즉, 세 가지 상황 으로 나 뉘 었 다.
코드:
#include
using namespace std;
//
typedef struct Node
{
int coe; //
int exp; //
Node *next;
}*polynomial;
//
bool InitPoly(polynomial &L)
{
L = new Node;
if(!L)
return false;
L->next = NULL;
return true;
}
//
void CreatePoly(polynomial &L, int n)
{
polynomial s, r;
r = L;
while(n--)
{
int i = 1;
s = new Node;
cout << " " << i << " :";
i++;
cin >> s->coe;
cin >> s->exp;
s->next = NULL;
r->next = s;
r = s;
}
}
//
polynomial AddPoly(polynomial pa, polynomial pb)
{
polynomial s; //
polynomial r; //
s = new Node; //
s->next = NULL;
r = s;
pa = pa->next; //
pb = pb->next;
while(pa && pb)
{
if(pa->exp > pb->exp)
{
r->next = pb;
r = pb;
pb = pb->next;
}
else if(pa->exp < pb->exp)
{
r->next = pa;
r = pa;
pa = pa->next;
}
else
{
int sum = pa->coe + pb->coe;
if(0 != sum)
{
pa->coe = pa->coe + pb->coe;
r->next = pa;
r = pa;
}
pa = pa->next;
pb = pb->next;
}
}
if(NULL != pa)
r->next = pa;
if(NULL != pb)
r->next = pb;
return s;
}
//
void PutPoly(polynomial L)
{
polynomial p;
p = L->next;
while(p)
{
cout << "(" << p->coe << "," << p->exp << ")" << '\t';
p = p->next;
}
cout << endl;
}
int main()
{
polynomial pa, pb;
InitPoly(pa);
InitPoly(pb);
cout << " a :";
int n;
cin >> n;
CreatePoly(pa, n);
cout << " b :";
cin >> n;
CreatePoly(pb, n);
cout << "a+b :";
PutPoly(AddPoly(pa, pb));
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.