一元多項式的資料結構設計

2023-01-20 19:36:02 字數 1738 閱讀 2037

《資料結構》

課程設計報告

課程設計題目:一元多項式計算

學生姓名

專業資訊管理與資訊系統

班級指導教師

****年* 月** 日

一、課程設計目的

資料結構課程與其他科目不同,具有較強的實踐性,內容豐富且抽象,。

二、題目簡介

一元多項式的表示在計算機內可以用鍊錶來表示,為了節省儲存空間,只儲存多項式中係數非零的項。鍊錶中的每乙個結點存放多項式的乙個係數非零項,它包含三個域,分別存放該項的係數、指數以及指向下乙個多項式項結點的指標。建立一元多項式鍊錶,對一元多項式的運算中會出現的各種可能情況進行分析,實現一元多項式的相加、相減、相乘操作。

通過分析多項式的特徵,不難看出多項式是由單項式構成的,而每個單項式都具有係數和指數,當係數為0時,該項就失去了意義,在計算機內要表示乙個多項式,至少以下資料資訊:係數資訊、指數資訊和指向下乙個單項式的指標。通過指標,我們就可以把多個單項式連線起來,形式乙個多項式,需要說明的是從廣義的角度講,單項式也是乙個多項式。

3、流程圖

四、程式清單和執行結果

#include<>

#include<>

typedef struct polynomial*polyn,polynomialpolyn為結點指標型別

void insert(polyn p,polyn h)

if(q2&&p->expn==q2->expn)

} else指數為新時將結點插入

p->next=q2;

q1->next=p;

} }}//insert

以下函式實現建立乙個多項式

polyn createpolyn(polyn head,int m)

return head;

}//createpolyn

以下函式實現多項式的銷毀

void destroypolyn(polyn p)

}以下函式實現顯示輸出多項式

void printpolyn(polyn p)

while (q)

else

if(q->coef==-1)

} q=q->next;

flag++;

}//while

printf("\n");

}//printpolyn

在下面的輔助乘法和加法運算

int compare(polyn a,polyn b)

else if(!a&&b) return -1;//a多項式已空,但b多項式非空

else return 1;//b多項式已空,但a多項式非空

}//compare

以下函式實現加法

polyn addpolyn(polyn pa,polyn pb)

case 0:

case -1:

}//switch

if(qc->coef!=0)

else free(qc);//當相加係數為0時,釋放該結點

}//while

return headc;

}//addpolyn

以下函式實現減法

polyn subtractpolyn(polyn pa,polyn pb)

pd=addpolyn(pa,h);

for(p=h->next;p;p=p->next) //恢復pb的係數

p->coef*=-1;

return pd;

}//subtractpolyn

一元多項式問題

本實驗的目的是進一步熟練掌握應用煉表處理實際問題的能力。一 問題描述 一元多項式相加是通過鍵盤輸入兩個形如p0 p1 x 1 p2 x 2 pn x n的多項式,經過程式運算後在螢幕上輸出它們的相加和。二 資料結構設計 分析任意一元多項式的描述方法可知,乙個一元多項式的每乙個子項都有 係數 指數 兩...

實驗報告 一元稀疏多項式的加法

程式2 一元稀疏多項式加法運算 問題描述 設計乙個求解一元稀疏多項式加法運算的程式。基本要求 1 輸入並建立多項式。2 輸出多項式,輸出形式為整數序列 n,c1,e1,c2,e2,cn,en,其中n是多項式的項數,ci和ei分別是第i項的係數和指數,序列按指數降序排列。3 多項式a和b相加,建立多項...

演算法與資料結構設計正文

具體課題題目 題目格式 宋體,3號,加粗,居中對齊 一 課題內容和要求 格式 宋體,4號,加粗,兩端對齊 該部分可參考前面給出的問題描述再加以細化一些 正文格式 宋體,小4號,不加粗,兩端對齊,1.5倍行距 二 概要設計 格式 宋體,4號,加粗,兩端對齊 在此說明每個部分的演算法設計說明 可以是描述...