一元多項式加法運算
題目說明:
編寫一元多項式加法運算程序。要求用線性鏈表存儲一元多項式。該程序有以下幾個功能:
1. 多項式求和
輸入:輸入三個多項式,建立三個多項式鏈表Pa、Pb、Pc
(提示:調(diào)用CreatePolyn(polynomial &P,int m)。
輸出:顯示三個輸入多項式Pa、Pb、Pc、和多項式Pa+Pb、多項式Pa+Pb+Pc
(提示:調(diào)用AddPolyn(polynomial &Pa, polynomial Pb), 調(diào)用PrintPolyn(polynomial P))。
0. 退出
輸入:
根據(jù)所選功能的不同,輸入格式要求如下所示(第一個數(shù)據(jù)是功能選擇編號,參見測試用例):
1
- 多項式A包含的項數(shù),以指數(shù)遞增的順序輸入多項式A各項的系數(shù)(整數(shù))、指數(shù)(整數(shù))
 - 多項式B包含的項數(shù),以指數(shù)遞增的順序輸入多項式B各項的系數(shù)(整數(shù))、指數(shù)(整數(shù))
 - 多項式C包含的項數(shù),以指數(shù)遞增的順序輸入多項式C各項的系數(shù)(整數(shù))、指數(shù)(整數(shù))
 
0 ---操作終止,退出。
輸出:
對應一組輸入,輸出一次操作的結(jié)果(參見測試用例)。
- 1 多項式輸出格式:以指數(shù)遞增的順序輸出: <系數(shù),指數(shù)>,<系數(shù),指數(shù)>,<系數(shù),指數(shù)>,參見測試用例。零多項式的輸出格式為<0,0>
 - 0 無輸出
 
測試輸入
1
2
1 1 2 2
2
1 1 2 2
2
1 1 2 2
測試輸出
<1,1>,<2,2>
<1,1>,<2,2>
<1,1>,<2,2>
<2,1>,<4,2>
<3,1>,<6,2>
源代碼
#include <stdio.h> 
#include <stdlib.h> 
#define OK 1 
#define ERROR 0 
#define TRUE 1 
#define FALSE 0 
typedef int ElemType; 
typedef int Status; 
typedef struct LNode 
{ 
  ElemType coef; //系數(shù)  
  ElemType exp;  //指數(shù)  
  struct LNode *next; 
}LNode, *LinkList;  //線性鏈表的結(jié)構(gòu) 
void CreateList(LinkList &H) 
{ 
  int a, b, n; 
  LinkList p; 
  scanf("%d", &n); 
  H = (LinkList)malloc(sizeof(LNode)); 
  p = H; 
  for (int i = 0; i<n; i++) 
  { 
    scanf("%d%d", &a, &b); 
    p->next = (LinkList)malloc(sizeof(LNode)); 
    p = p->next; 
    p->coef = a; 
    p->exp = b; 
  } 
  p->next = NULL; 
}//CreateList  //以線性鏈表的結(jié)構(gòu)建立一元多項式  
void PrintList(LinkList &head) 
{ 
  LinkList p; 
  p = head->next; 
  if (p == NULL) 
  { 
    printf("<0,0>\n"); 
    return; 
  } 
  else{ 
    printf("<%d,%d>", p->coef, p->exp); 
    p = p->next; 
  } 
  while (p) 
  { 
    printf(",<%d,%d>", p->coef, p->exp); 
    p = p->next; 
  } 
  printf("\n"); 
}//PrintList 
void AddPolyn(LinkList &pa, LinkList &pb) 
{ 
  int sum = 0; 
  LinkList a, b, q, cur; 
  a = pa->next; 
  b = pb->next; 
  cur = pa; 
  while ((a != NULL) && (b != NULL)) 
  { 
    if (a->exp < b->exp) 
    { 
      cur = a; 
      a = a->next; 
    } 
    else if (a->exp == b->exp) 
    { 
      sum = a->coef + b->coef; 
      if (sum == 0) 
      { 
        q = a->next; 
        free(a); 
        a = q; 
        cur->next = q; 
      } 
      else 
      { 
        a->coef = sum; 
        cur = a; 
        a = a->next; 
      } 
      q = b; 
      b = b->next; 
      free(q); 
    } 
    else 
    { 
      q = b->next; 
      b->next = a; 
      cur->next = b; 
      cur = b; 
      b = q; 
    } 
  } 
  if (b) 
    cur->next = b; 
}//AddPolyn 
Status main() 
{ 
  int N;  
  while (scanf("%d", &N)!=EOF) 
  { 
    if (N == 0) 
      break; 
    LinkList pa, pb, pc; 
    CreateList(pa); 
    CreateList(pb); 
    CreateList(pc); 
    PrintList(pa); 
    PrintList(pb); 
    PrintList(pc); 
    AddPolyn(pa, pb); 
    PrintList(pa); 
    AddPolyn(pa, pc); 
    PrintList(pa); 
  } 
  return 0; 
} 
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章
- 01-10C語言 解決不用+、-、&#215;、&#247;數(shù)字運算符做加法
 - 01-10解析如何用指針實現(xiàn)整型數(shù)據(jù)的加法
 - 01-10使用單鏈表實現(xiàn)多項式計算示例
 - 01-10詳解C++語言中的加法運算符與賦值運算符的用法
 - 01-10C++通過自定義函數(shù)求一元二次方程的根
 - 01-10C語言簡單實現(xiàn)求n階勒讓德多項式的方法
 - 01-10C++使用遞歸方法求n階勒讓德多項式完整實例
 - 01-10c++加法高精度算法的簡單實現(xiàn)
 - 01-10使用C++的string實現(xiàn)高精度加法運算的實例代碼
 - 01-10C++中實現(xiàn)矩陣的加法和乘法實例
 


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言的正則匹配函數(shù) c語言正則表達
 - 04-02c語言用函數(shù)寫分段 用c語言表示分段
 - 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
 - 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
 - 04-02c語言沒有round函數(shù) round c語言
 - 04-02c語言分段函數(shù)怎么求 用c語言求分段
 - 04-02C語言中怎么打出三角函數(shù) c語言中怎
 - 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
 
隨機閱讀
- 04-02jquery與jsp,用jquery
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 01-10delphi制作wav文件的方法
 - 01-10SublimeText編譯C開發(fā)環(huán)境設置
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-10C#中split用法實例總結(jié)
 - 01-11ajax實現(xiàn)頁面的局部加載
 


