데이터 구조 - 다항식 더하기
입력 형식 은 프로그램 알림 을 보십시오.
#include
#include
#include
#define FALSE 0
#define TRUE 1
typedef int DataType;
typedef struct tagNode
{
float coef;
int exp;
struct tagNode *pNext;
};
typedef struct tagNode Node;
typedef struct tagNode *pNode;
// ,
void insertList(pNode head, pNode pnode) // ,
{
pNode pPre = head;
while(pPre->pNext != NULL)
{
if (pPre->pNext->exp > pnode->exp)
{
pnode->pNext = pPre->pNext;
pPre->pNext = pnode;
break;
}
else if(pPre->pNext->exp == pnode->exp) // ,
{ //
pPre->pNext->coef = pPre->pNext->coef+pnode->coef;
free(pnode);
break;
}
pPre = pPre->pNext;
}
if (pPre->pNext == NULL) // ,
{
pPre->pNext = pnode;
}
}
//
void printLinkedList(pNode head)
{
pNode temp = head->pNext;
while (temp != NULL)
{
printf(" %g", temp->coef);
printf("x^%d +", temp->exp);
temp = temp->pNext;
}
printf("\b
");
}
//
void add_poly(Node *pa, Node *pb)
{
Node *p = pa->pNext; // 1, 1
Node *q = pb->pNext; // 2
Node *pre = pa;
Node *temp; //
float x;
while(p != NULL && q != NULL) //
{
if (p->exp < q->exp) // 1 2
{
pre = p;
p = p->pNext; // 1 , 。
}
else if(p->exp == q->exp) // 1 2
{
x = p->coef + q->coef; // x 。 x 0
if (x != 0) // x 0 1
{
p->coef = x;
pre = p;
}
else // x 0 1
{
pre->pNext = p->pNext;
free(p);
}
p = pre->pNext; // p
// 2 。
temp = q;
q = q->pNext;
free(temp);
}
else // 1 2 , 1
{
temp = q->pNext;
q->pNext = p;
pre->pNext = q;
pre = q;
q = temp;
}
}
if (q) // 2 1 , 2 1 。
{
pre->pNext = q;
}
free(pb);
}
int main()
{
pNode head1 = (pNode)malloc(sizeof(struct tagNode)); //
pNode head2 = (pNode)malloc(sizeof(struct tagNode));
int exp, temp1; //
float coef, coef2; //
pNode pTemp = NULL;
head1->pNext = NULL;
head2->pNext = NULL;
// 1
printf(" 1 , \' , \'。 , 0 。
");
// , 0,0 , 。
scanf("%f,%d", &coef, &exp);
while(coef != 0 || exp != 0)
{
pTemp = (pNode)malloc(sizeof(struct tagNode));
pTemp->coef = coef;
pTemp->exp = exp;
pTemp->pNext = NULL;
insertList(head1, pTemp);
//temp1 = exp;
//temp2 = coef;
scanf("%f,%d", &coef, &exp);
}
printf(" 1 :
");
printLinkedList(head1);
printf("
");
// 2
printf(" 2 , \' , \'。 , 0 。
");
// , 0,0 , 。
scanf("%f,%d", &coef, &exp);
while(coef != 0 || exp != 0)
{
pTemp = (pNode)malloc(sizeof(struct tagNode));
pTemp->coef = coef;
pTemp->exp = exp;
pTemp->pNext = NULL;
insertList(head2, pTemp);
scanf("%f,%d", &coef, &exp);
}
printf(" 2 :
");
printLinkedList(head2);
printf("
");
//
add_poly(head1, head2);
printf(" :
");
printLinkedList(head1);
printf("
");
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.