Data Structures实习三 多项式运算.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Data Structures实习三 多项式运算.ppt

Data Structures 實習三 多項式運算 Instructor: Ching-Chi Lin 林清池 助理教授 chingchi.lin@ Department of Computer Science and Engineering National Taiwan Ocean University Outline * 多項式的運算 多項式的儲存方式 多項式的加法 多項式的乘法 多項式的計算加分題 多項式的運算 * 寫一個程式處理多項式的相加與相乘。 Ex: 黑色框:項。 紅色框:係數。 綠色框:次數。 係數有可能是負數或浮點數。 次數一定為零或正整數。 多項式的儲存方式 * 使用typedef來建立一種新結構型態,來儲存每一項的資訊 typedef struct  {   float coef; //係數   unsigned int expon; //次數  }polynomial; 使用該結構型態的陣列來存放所有多項式的每一項資訊 polynomial p[MAX_TERM]; 定義一個常數,來決定每一個陣列的項數上限 #define MAX_TERM 100 多項式的儲存方式 * 所有的多項式都存在同一個陣列中。 儲存所有多項式的陣列需可以被所有函式存取。 全域變數。 傳入pointer。 一個avail offset儲存目前第一個可用的空間。 一個多項式需要兩個offset,紀錄開頭與結尾。 開頭與結尾的offset變數,可能在某些函式中變更。 多項式的儲存方式 * 把兩個多項式      和 儲存在陣列中。 startA,start B :表示A,B的第一項的索引。 finishA,finishB:表示A,B的最後一項的索引。 avail:表示陣列中下一個可用的空閒位置之索引。 coef 2 1 1 5 3 1 0 expon 1000 0 4 3 2 0 0 startA finisA startB finisB avail 0 1 2 3 4 5 6 多項式的儲存方式 * 任何多項式至少會佔去一個項的空間,如果該項的係數為0,表示此多項式為0多項式。 任何多項式運算的結果,其初始值為0多項式。 Avail指向的位置一定不被任何多項式佔用。 coef 0 0 … expon 0 0 … startA finisA 0 1 … avail 加入一個次項至多項式 * 找到要加入的位置。 對次數來說,p[x-1]y 且 p[x]=y 如果已有該次項,則不用加入。 如果目標為0多項式,直接寫入。 如果加入的目標為0,則直接跳過。 為多項式新增一個項的空間。 0多項式則可以跳過。 要注意空間是否用完。 把所有次數低於新增目標的項往後位移一格。 寫入要加入的項。 加入一個次項至多項式 Pseudo Code * for(ctr=*start ; ctr = *end p[ctr].expon expon ; ctr++ ); Extend end with 1 term; for(ctr2 = *end ; ctr2 ctr ; ctr2-- )  p[ctr2]=p[ctr2-1]; Insert the target term; 加入一個次項至多項式 演算法 * poly_attach(int *start, int *end, float coef, int expon); Attach target: coef 3 5 0 … expon 5 3 0 … start end avail coef 7 expon 2 avail end 0 2 0 0 0 2 4 1 0 4 1 7 2 多項式的加法 * 同次項目,係數相加。 項數可能增加,需注意溢位問題。 Ex:     多項式的加法 Pseudo Code * while(A and B are not end yet) {  if(A term’s degree B term’s)   add A term into result;   move A to next term;  else if (A turm’s degree B turm’s)  add B term into result;  move B to next term;  else  add A term wi

文档评论(0)

gtez + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档