完整版一元稀疏多項式計算器

2021-08-20 08:52:58 字數 2140 閱讀 5978

一元稀疏多項式計算器

[問題描述]:

設計乙個一元稀疏多項式簡單計算器。

[基本要求]:

一元稀疏多項式簡單計算器的基本功能是:

(1)輸出並建立多項式;

(2)輸出多項式,輸出形式為整數序列:n,c1,e1,c2,e2,...,cn,en,其中n是多項式的項數,ci和ei分別是第i項的係數和指數,序列按指數降序排列;

(3)多項式a和b相加,建立多項式a+b;

(4)多項式a和b相減,建立多項式a-b;

[測試資料]

(1)(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7);

(2)(6x^(-3)-x+4.4x^2-1.2x^9)-(-6x^(-3)+5.4x^2-x^2+7.8x^15)=(-7.8x^15-1.2x^9+12x^(-3)-x);

(3)(x+x^3)+(-x-x^3)=0;

(4)(x+x^2+x^3)+0=x+x^2+x^3;

(由於篇幅原因,只選取了具有代表性的4組測試資料)

[實現提示]

用帶表頭節點的單鏈表儲存多項式。

一:程式設計流程:

1.建立兩個帶頭節點的單鏈表a、b。

2.將a、b兩個鍊錶連線成乙個新鍊錶 c;

3.用冒泡法對c中煉表進行排序。

4.把c鍊錶中指數項相同節點合併。

二:程式源**:

#include

#include

#include

typedef struct polynode  

polynode;  //用polynode定義polynode的結構體變數。

typedef polynode *polynomial;  //是將*polynomial定義為struct polynode型別,即polynomial被定義為乙個型別名。這樣就可以用polynomial來定義說明新的變數了

polynomial createlist()

else

}   

l->next = null;  

}  return head;  

}  void sortlist(polynomial l) // 用冒泡法對鍊錶l中的節點按指數降序排列。

}  }     

return;  

}  void display(polynomial p)

while(pointer!=null);  

}  polynomial linklist(polynomial a,polynomial b,int n)  //鏈結鍊錶a b,在這裡設定b的頭指標為連線後的頭指標 n=1表示加法,n=2表示減法;  

};  

for(tail_b;tail_b->next!=null;tail_b=tail_b->next);  // 連線 b a 鍊錶,以b煉表頭為合併後的表頭  

tail_b->next=a;  

c=b;  

sortlist(c);  

return c;  

}  void mergelist(polynomial c)

else

}  }int main()

else  }

三、測試資料

一元稀疏多項式計算器

實驗 一元稀疏多項式計算器 一 實驗目的 1.了解線性表的鏈式儲存結構,熟練掌握鍊錶。2.了解作為鍊錶的多項式存貯方式。3.熟悉掌握多項式加法的演算法。二 實驗原理 順序儲存的線性表有一些弱點,其一,插入與刪除元素需要大量移動元素 其二,預先分配儲存空間時必須按最大的空間來分配。其三,表長難以擴充。...

一元稀疏多項式計算器(加減)

思路 1.首先是建立鍊錶,再儲存資料。2.進行多項式的運算。通過每一項的比較,判斷指數是否相等,相等就進行合併,不相等就不操作並找到下一項。這道題主要是考察了鍊錶的操作,估計很多人都會被繞暈了,不知道指標指向了 我已開始也敗在了指向問題上,在加法操作中,把pa,pb鍊錶記憶體的資料元素全都改變了,又...

一元多項式加法計算器

include include typedef struct polynode polynode,polylist 輸入資料,邊輸入邊排序進鍊表 void inputdataandsortingdata polylist polynomial,int n 初始化多項式鍊錶 void init pol...