西安郵電學院
資料結構課程設計報告
題目多項式乘法
一、課程設計目的
本次課程設計的目的旨在於讓學生在學習資料結構課程過程中,將一些演算法的思想應用到實際的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 範數 資料擬合的具體作法是 對...