일원 희소 다항식 (가감 법)
기본 적 인 사 고 는 하나의 구조 체 노드 를 만 들 고 모든 항목 의 계수 (float), 지수 (int) 와 next 지침 을 저장 하 는 것 이다.링크 A 와 B 두 개 를 입력 한 후:
1. 지수 가 같 을 때 계수 가 더 해진 다 (감법 시 상감).더 한 계수 가 0 이 아니라면 링크 C 에 저장 합 니 다.
2. 지수 가 같 지 않 으 면 A 의 지수 가 B 보다 작 으 면 A 의 노드 안의 계수, 지 수 를 모두 링크 C 에 저장한다.
3. 반대로 B 의 노드 안의 계수, 지 수 를 모두 링크 C 에 저장한다.
4. 하나의 링크 가 있 는 뒤의 몇 가지 가 더 나 올 때 링크 C 에 저장 합 니 다.
그리고 링크 C 를 출력 합 니 다.
주의사항:
1. 두 결점 은 바 꿀 수 없고 조작 할 때 하나의 노드 가 두 노드 나 첫 번 째 노드 를 가리 키 는 것 을 신청 하여 조작 해 야 한다.
2. 순환 에서 모든 데 이 터 를 입력 하기 전에 노드 공간 을 신청 해 야 합 니 다.
3. 포인터 가 가리 키 는 곳 에 주의 하고 포인터 와 할당 순 서 를 주의 하 세 요.
4. 링크 입력 의 끝 에 주의 하고 입력 이 끝 난 판단 이 있어 야 하 며 꼬리 포인터 가 비어 있어 야 합 니 다.
5. 포인터 함 수 는 마지막 으로 포인터 노드 를 되 돌려 야 합 니 다. 함수 의 유형 도 구조 체 의 유형 입 니 다.
코드 는 다음 과 같 습 니 다. 상세 한 설명 이 있 습 니 다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct PolyNode //
{
float coef; //
int exp; //
struct PolyNode * next;
}PolyNode;
typedef PolyNode * Polynomial; //
Polynomial CreateList() //
{
Polynomial L,p,r;
r = L = (Polynomial )malloc(sizeof(PolyNode )); // L
L->next = NULL;
float x;
int y;
scanf("%f %d",&x,&y);
while(x && y) // ( x!=0 && y!=0 )
{
p = (Polynomial )malloc(sizeof(PolyNode ));
p->coef = x;
p->exp = y;
p->next = NULL;
r->next = p;
r = p;
scanf("%f %d",&x,&y);
getchar(); // 0 0
}
return L; //
}
Polynomial Add(Polynomial A, Polynomial B) //
{
Polynomial C,S;
Polynomial pa,pb,pc;
float x;
pa = A->next;
pb = B->next;
C = (Polynomial )malloc(sizeof(PolyNode )); //
pc = C; // pc
pc->next = NULL;
while (pa && pb)
{
if(pa->exp == pb->exp) //
{
x = pa->coef + pb->coef;
if (x) // 0
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = x;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
}
pa = pa->next;
pb = pb->next;
}
else
if(pa->exp < pb->exp) // A B
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pa->coef;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
pa = pa->next;
}
else // A B
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pb->coef;
S->exp = pb->exp;
S->next = NULL;
pc->next = S;
pc = S;
pb = pb->next;
}
}
while (pa) //A
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pa->coef;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
pa = pa->next;
}
while (pb) //B
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pb->coef;
S->exp = pb->exp;
S->next = NULL;
pc->next = S;
pc = S;
pb = pb->next;
}
return C;
}
Polynomial Minus(Polynomial A, Polynomial B) // ,
{
Polynomial C,S;
Polynomial pa,pb,pc;
float x;
pa = A->next;
pb = B->next;
C = (Polynomial )malloc(sizeof(PolyNode ));
pc = C;
pc->next = NULL;
while (pa && pb)
{
if(pa->exp == pb->exp)
{
x = pa->coef - pb->coef; //
if (x)
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = x;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
}
pa = pa->next;
pb = pb->next;
}
else
if(pa->exp < pb->exp)
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pa->coef;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
pa = pa->next;
}
else
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pb->coef;
S->exp = pb->exp;
S->next = NULL;
pc->next = S;
pc = S;
pb = pb->next;
}
}
while (pa)
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pa->coef;
S->exp = pa->exp;
S->next = NULL;
pc->next = S;
pc = S;
pa = pa->next;
}
while (pb)
{
S = (Polynomial )malloc(sizeof(PolyNode ));
S->coef = pb->coef;
S->exp = pb->exp;
S->next = NULL;
pc->next = S;
pc = S;
pb = pb->next;
}
return C;
}
int main()
{
Polynomial A, B, C, pc;
char f;
printf(" A:
");
A = CreateList();
printf(" :
");
scanf("%c",&f);
getchar(); //
printf(" B:
");
B = CreateList();
C = (Polynomial )malloc(sizeof(PolyNode ));
C->next = NULL;
if(f == '+') C = Add(A , B);
if(f == '-') C = Minus(A , B);
pc = C->next;
while(pc != NULL)
{
printf(" C :%.2fX^%d " ,pc->coef, pc->exp);
pc = pc->next;
}
printf("
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.