<!--StartFragment-->

 

연결리스트를 이용한 두다항식의 덧셈 프로그램을 만들었는데 여기에서 addPoly 함수를 바꿔서 메인함수에서 주어진 두다항식에 대한 연산결과를 곱셈으로 바꿔서 제출하라는데.... 어떻게 해야 할지 모르겠습니다.

  <?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" />

#include <stdio.h>

#include <stdlib.h>

 

typedef struct ListNode{

float coef;

int expo;

struct ListNode* link;

} ListNode;

 

typedef struct ListHead{

ListNode* head;

} ListHead;

 

ListHead* createLinkedList(void) {

ListHead* L;

L = (ListHead *)malloc(sizeof(ListHead));

L->head = NULL;

return L;

}

 

void addLastNode(ListHead* L, float coef, int expo) {

ListNode* newNode;

ListNode* p;

newNode = (ListNode *)malloc(sizeof(ListNode));

newNode->coef = coef;

 

newNode->expo = expo;

newNode->link = NULL;

if(L->head == NULL){

L->head = newNode;

return;

}

else {

p = L->head;

while(p->link != NULL) {

p = p->link;

}

p->link = newNode;

}

}

 

void addPoly(ListHead* A, ListHead* B, ListHead* C) {

ListNode* pA = A->head;

ListNode* pB = B->head;

float sum;

 

while(pA && pB){

if(pA->expo == pB->expo){

sum = pA->coef + pB->coef;

addLastNode(C, sum, pA->expo);

pA=pA->link; pB=pB->link;

}

else if(pA->expo > pB->expo){

addLastNode(C, pA->coef, pA->expo);

pA=pA->link;

}

else {

addLastNode(C, pB->coef, pB->expo);

pB=pB->link;

}

}

 

for( ; pA!=NULL; pA=pA->link)

addLastNode(C, pA->coef, pA->expo);

 

for( ; pB!=NULL; pB=pB->link)

addLastNode(C, pB->coef, pB->expo);

}

 

void printPoly(ListHead* L) {

ListNode* p = L->head;

for(;p;p=p->link){

printf("%3.0fx^%d", p->coef, p->expo);

}

}

 

void main(void){

puts("\n 작성자 : 조교 ");

 

ListHead *A, *B, *C;

 

A = createLinkedList();

B = createLinkedList();

C = createLinkedList();

 

addLastNode(A, 4,3);

addLastNode(A, 3,2);

addLastNode(A, 5,1);

printf("\n A(x)=");

printPoly(A);

 

addLastNode(B, 3,4);

addLastNode(B, 1,3);

addLastNode(B, 2,1);

addLastNode(B, 1,0);

printf("\n B(x)=");

 

printPoly(B);

 

addPoly(A, B, C);

printf("\n C(x)=");

printPoly(C);

 

getchar();

}

 

 

 

 

 

<?xml:namespace prefix = "v" ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = "w" ns = "urn:schemas-microsoft-com:office:word" />