多項式相乘

2023-01-01 17:45:02 字數 2725 閱讀 9969

西安郵電學院

資料結構課程設計報告

題目多項式乘法

一、課程設計目的

本次課程設計的目的旨在於讓學生在學習資料結構課程過程中,將一些演算法的思想應用到實際的c語言程式,通過對順序表,鍊錶,隊棧的使用,讓學生更加了解資料結構的應用和那讓人嘆為觀止演算法的精妙。

鞏固c語言基礎,讓演算法與程式得到統一,複習對於檔案的讀寫操作

二、課程設計內容

以動態單鏈表為儲存結構,使用排序等操作實現多項式的乘法運算

三、需求分析(多項式相乘)

【問題描述】

用帶頭結點的動態單鏈表來表示多項式;在此基礎上完成多項式的乘法運算。

【基本要求】

1. 要求以動態鍊錶為儲存結構、使用到查詢和排序等操作;

2. 用乙個單鏈表來表示乙個一元多項式;

3. 在建立多項式的過程中,可以按指數的任意順序輸入,並且可在同一多項式中輸入指數相同的多個項;

4. 在進行乘法操作之前,輸出參與操作的兩個多項式。要求輸出的多項式按指數降序排列,同指數的多項合併,項數的正負號顯示合理。

5. 對已排序且合併了同指數項的兩個多項式實現乘法操作,並輸出結果;

6. 結果多項式也以動態鍊錶為儲存結構;

7. 輸出結果多項式要求按指數降序排列,同指數的多項要合併,項數的正負號要求顯示合理。

四、概要設計

1.系統結構圖(功能模組圖)

對系統進行分析,給出系統結構圖;

2.功能模組說明

對各個模組進行功能的描述。

1. 多項式鍊錶建立polylist creat();

通過終端輸入多項式的係數coef和指數exp(以0,0結束),分別建立la,lb兩個有頭結點,coef和exp兩個資料域的多項式鍊錶,並返回head;

2.多項式鍊錶排序polylist polysort(polylist head);

將輸入是指數無序的多項式,按照降序次冪進行排序,同時對相同x次冪的進行合併,並且對0係數的項,進行處理;

3.多項式相乘函式polylist polymul(polylist la,polylist lb);

通過對la、lb中項係數相乘,指數相加構建新的多項式鍊錶lc,同時呼叫多項式鍊錶排序函式polylist polysort(polylist head)對多項式鍊錶lc中項進行降序排序;

4.輸出函式void print(polylist head);

輸出鍊錶lc,考慮到對1,-1,0等作為係數指數的情況,做了相應的處理,同時對負指數加上了括號,使結果更加明晰。

五、詳細設計及執行結果

流程圖,

執行結果

六、除錯情況,設計技巧及體會

1、對自己設計進行評價,指出合理和不足之處,提出改進的方案。

2、在設計過程中的感受。

七、參考文獻

《c語言程式設計譚浩強清華大學出版社

《c語言程式設計王曙燕等科學出版社

《資料結構——使用c語言》 陳一華等電子科技大學出版社

《資料結構題集嚴蔚敏,吳偉民清華大學出版社

八、附錄:源**

(略,詳見電子版實驗報告)

#include<>

#include<>

#include<>

#include <>

#define n 20

#define maxsize 20

#define bsize 1000

#define elemtype char

#define m 20

typedef struct node

linkstack;

void initstack(linkstack *s) //初始化

void push(linkstack *s,elemtype x)//進棧

int pop(linkstack * s,elemtype * x)//出棧

}int gettop(linkstack *s,elemtype * x)//取棧頂元素

}int stackempty(linkstack *s)//判斷棧是否空

/*佇列*/

typedef struct node //建立佇列

linkqueuenode;

typedef struct

linkqueue;

void initqueue(linkqueue *q) //鏈佇列初始化

}void enterqueue(linkqueue *q,char x) //入隊

else return 0; //益出

}void deletequeue(linkqueue *q,char *x) //出佇列

linkstack s;

linkqueuenode q;

//檔案操作

struct

rule[n];

struct

mean[n];

void read_rule讀取檔案

while(fscanf(fp,"%s %s",rule[i].r,rule[i].r)!=eof)

fclose(fp);

return;

}void read_mean()

while(fscanf(fp,"%s %s",mean[i].m,mean[i].m)!=eof)

fclose(fp) ;

return;

}input()

void tsl()

else if(e=='a'){

多項式乘以多項式

學習目標 理解多項式乘以多項式的運算法則 重點 能夠按多項式乘法步驟進行簡單的乘法運算 難點 學習過程 一 創設情境 我們在上一節課裡學習了單項式與多項式的乘法,請口算下列練習中的 1 2 1 3x x y2 a b k 3 a b m n 比較 3 與 1 2 在形式上有何不同?如何進行多項式乘以...

多項式乘以多項式導學稿

武城一中數學導學稿 年級 初二年級學科 數學執筆 審核 張迎華初二數學備課組 內容 多項式乘以多項式課型 新授課時間 2011年月日 學習目標 1.探索多項式乘法的法則過程,理解多項式乘法的法則,並會進行多項式乘法的運算 2.進一步體會乘法分配律的作用和轉化的思想,發展有條理的思考和語言表達能力.重...

多項式擬合

最小二乘法的基本原理和多項式擬合 一最小二乘法的基本原理 近似函式,資料點 i 0,1,m 誤差 i 0,1,m 常用的方法有以下三種 一是誤差絕對值的最大值,即誤差向量的 範數 二是誤差絕對值的和,即誤差向量r的1 範數 三是誤差平方和的算術平方根,即誤差向量r的2 範數 資料擬合的具體作法是 對...