一元稀疏多項式計算器
[問題描述]:
設計乙個一元稀疏多項式簡單計算器。
[基本要求]:
一元稀疏多項式簡單計算器的基本功能是:
(1)輸出並建立多項式;
(2)輸出多項式,輸出形式為整數序列:n,c1,e1,c2,e2,...,cn,en,其中n是多項式的項數,ci和ei分別是第i項的係數和指數,序列按指數降序排列;
(3)多項式a和b相加,建立多項式a+b;
(4)多項式a和b相減,建立多項式a-b;
[測試資料]
(1)(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7);
(2)(6x^(-3)-x+4.4x^2-1.2x^9)-(-6x^(-3)+5.4x^2-x^2+7.8x^15)=(-7.8x^15-1.2x^9+12x^(-3)-x);
(3)(x+x^3)+(-x-x^3)=0;
(4)(x+x^2+x^3)+0=x+x^2+x^3;
(由於篇幅原因,只選取了具有代表性的4組測試資料)
[實現提示]
用帶表頭節點的單鏈表儲存多項式。
一:程式設計流程:
1.建立兩個帶頭節點的單鏈表a、b。
2.將a、b兩個鍊錶連線成乙個新鍊錶 c;
3.用冒泡法對c中煉表進行排序。
4.把c鍊錶中指數項相同節點合併。
二:程式源**:
#include
#include
#include
typedef struct polynode
polynode; //用polynode定義polynode的結構體變數。
typedef polynode *polynomial; //是將*polynomial定義為struct polynode型別,即polynomial被定義為乙個型別名。這樣就可以用polynomial來定義說明新的變數了
polynomial createlist()
else
}
l->next = null;
} return head;
} void sortlist(polynomial l) // 用冒泡法對鍊錶l中的節點按指數降序排列。
} }
return;
} void display(polynomial p)
while(pointer!=null);
} polynomial linklist(polynomial a,polynomial b,int n) //鏈結鍊錶a b,在這裡設定b的頭指標為連線後的頭指標 n=1表示加法,n=2表示減法;
};
for(tail_b;tail_b->next!=null;tail_b=tail_b->next); // 連線 b a 鍊錶,以b煉表頭為合併後的表頭
tail_b->next=a;
c=b;
sortlist(c);
return c;
} void mergelist(polynomial c)
else
} }int main()
else }
三、測試資料
一元稀疏多項式計算器
實驗 一元稀疏多項式計算器 一 實驗目的 1.了解線性表的鏈式儲存結構,熟練掌握鍊錶。2.了解作為鍊錶的多項式存貯方式。3.熟悉掌握多項式加法的演算法。二 實驗原理 順序儲存的線性表有一些弱點,其一,插入與刪除元素需要大量移動元素 其二,預先分配儲存空間時必須按最大的空間來分配。其三,表長難以擴充。...
一元稀疏多項式計算器(加減)
思路 1.首先是建立鍊錶,再儲存資料。2.進行多項式的運算。通過每一項的比較,判斷指數是否相等,相等就進行合併,不相等就不操作並找到下一項。這道題主要是考察了鍊錶的操作,估計很多人都會被繞暈了,不知道指標指向了 我已開始也敗在了指向問題上,在加法操作中,把pa,pb鍊錶記憶體的資料元素全都改變了,又...
一元多項式加法計算器
include include typedef struct polynode polynode,polylist 輸入資料,邊輸入邊排序進鍊表 void inputdataandsortingdata polylist polynomial,int n 初始化多項式鍊錶 void init pol...