#dokydoky

[연습문제] 열혈강의 자료구조 3장(5번~6번) 본문

Programming

[연습문제] 열혈강의 자료구조 3장(5번~6번)

dokydoky 2011. 9. 4. 05:57


5. 두 개의 다항식 A와 B에 대해서 다항식의 뺄셈 A-B를 구하는 함수 polySub()를 구현해 보세요.

LinkedList* polySub(LinkedList* pListA, LinkedList* pListB)
{
 LinkedList* pReturn = NULL;
 ListNode* pNodeA = NULL;
 ListNode* pNodeB = NULL;

 if( pListA != NULL && pListB != NULL )
 {
  pReturn = createLinkedList();
  if(pReturn == NULL)
  {
   printf("메모리 할당 오류 polyAdd()\n");
   return NULL;
  }

  pNodeA = pListA->headerNode.pLink;
  pNodeB = pListB->headerNode.pLink;

  while( pNodeA != NULL && pNodeB != NULL )
  {
   if( pNodeA->degree > pNodeB->degree )
   {
    addPolyNodeLast(pReturn, pNodeA->coef, pNodeA->degree);

    pNodeA = pNodeA->pLink;
   }
   else if( pNodeA->degree < pNodeB->degree )
   {
    addPolyNodeLast(pReturn, (pNodeB->coef)*(-1), pNodeB->degree);

    pNodeB = pNodeB->pLink;
   }
   else
   {
    addPolyNodeLast(pReturn, pNodeA->coef - pNodeB->coef, pNodeA->degree);

    pNodeA = pNodeA->pLink;
    pNodeB = pNodeB->pLink;
   }
  }

  while( pNodeA != NULL )
  {
   addPolyNodeLast(pReturn, pNodeA->coef, pNodeA->degree);

   pNodeA = pNodeA->pLink;
  }

  while( pNodeB != NULL)
  {
   addPolyNodeLast(pReturn, (pNodeB->coef)*(-1), pNodeB->degree);

   pNodeB = pNodeB->pLink;
  }
 }

 return pReturn;
}


6. 희소 행렬의 전치행렬을 구하는 함수를 구현해 보세요.

-> 진행중....

Comments