分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
一元多項式定義:
設a0,a1,a2,…,an-1,an都是數域f中的數(注:1,2,……,n-1,n均為a的下角標),n是非負整數,那麼表示式
anx^n +an-1x^(n-1)+…+a2x^2 +a1x + a0(an≠0) (1)
叫做數域f上乙個文字x的多項式或一元多項式。在多項式(1)中,a0叫做零次多項式或常數項,a1x叫做一次項,一般,aix叫做i次項,ai叫做i次項的係數。一元多項式用符號f(x),g(x),…來表示。
說一下思路,利用帶有兩個資料元素的鍊錶實現加法運算,資料域分別儲存coef(係數)和exp(指數),運算時比較兩鍊錶當前資料域指數大小,三種情況結合正確組裝出和鍊錶並存入原鍊錶la,(注意本問題多項式的指數按從小到大順序排列)。,**如下:
#include
using
namespace
std;typedef
struct
polynodepolynode,*polylist;void
init_linklist
(polylist *l)
/*對單鏈表進行初始化*/
void
polycreate
(polylist head)
rear->next=null; /*將表的最後乙個結點的next置null,以示表結束*/}void
polyadd
(polylist polya, polylist polyb)
/*此函式用於將兩個多項式相加,然後將和多項式存放在多項式polya中,並將多項式ployb刪除*/
else
if ( p->exp == q->exp) /*若指數相等,則相應的係數相加*/ else } else } if(p!=null) /*多項式a中還有剩餘,則將剩餘的結點加入到和多項式中*/ pre->next=p; else
/*否則,將b中的結點加入到和多項式中*/ pre->next=q;}void
print
(polylist l)
cout
<
main
()
挺經典的,,,考試神馬的簡單問題也許用得到
求值,求導,相加三個都有的
#include
#include
#define max 100
typedef
structlnode;void
create
(lnode *f)
//一元多項式的建立
f->length=n;}void
calculate
(lnode *f,float x)
//一元多項式的求值
printf("一次多項式的值為:"); printf("%f\n",sum);}void
plus
(lnode *f1,lnode *f2)
//一元多項式的相加
else printf("相加後的多項式為:\n"); if(f->a[0]!=0) printf("f=%f",f->a[0]); else
printf("f="); for(i=1;i<=f->length;i++) printf("\n");}void
qiudao
(lnode *f)
//一元多項式的求導
printf("\n"); } void
main
()//主函式
}
給我老師的人工智慧教程打call!
線性表 一元多項式的運算
polylist polycreate polylist head rear next null return head 思路 將兩個多項式從頭掃瞄,指數相同項相加,如果為0則釋放該空間,如果非0則構成一項,最終指數不同的項按指數公升序排列。用變數p q分別指向鏈a b中的第一結點,把結果存放在a中...
單鏈表應用 一元多項式
單鏈表應用 一元多項式 問題描述 編寫乙個程式用單鏈表儲存多項式,並實現兩個一元多項式a與b相加的函式。a,b剛開始是公升序的,a與b之和按降序排列。例如 多項式a 1.2x 0 2.5x 1 3.2x 3 2.5x 5 多項式b 1.2x 0 2.5x 1 3.2x 3 2.5x 5 5.4x 1...
一元多項式求和演算法(單鏈表實現)
單鏈表的應用舉例 採用單鏈表儲存,則每乙個非零項對應單鏈表中的乙個節點,且單鏈表應按指數遞增序列排列。為了節省空間只儲存非零項。其中 eof為係數域,存放非零項的係數 exp為指數域,存放非零項的指數 next為指標域,存放下一結點的指標 偽 1.工作指標pre,p,qre,q初始 2.while ...