線性表之單鏈表實現一元多項式相加 求值,求導

2021-09-01 00:02:12 字數 1918 閱讀 7860

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

一元多項式定義:

設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 ...