問題描述:
設計乙個一元稀疏多項式簡單的加減法計算器
實現要求:
一元稀疏多項式簡單計算器的基本功能是:
(1)輸入並建立多項式
(2)輸出多項式
(3)多項式a和
b相加(4)選作:多項式a和
b相減,建立多項式c=
a-b,並輸出相加的結果多項式
d方法說明:
(1)多項式的輸入與存
用帶表頭
結點的單鏈表儲存多項式,鍊錶中的每個節點分別儲存多項式各項的係數和指數,即每從鍵盤輸入多項式的一對數(係數,指數),可對應建立鍊錶的乙個結點。每個節點的結構為:
(2)多項式資料型別的定義
struct taganaode
;typedef struct tagnode node;
typedef struct tagnode* pnode;
(3)主要演算法
①建立兩個鍊錶,分別存放多項式1
和多項式
2,這兩個鍊錶中的節點是按指數降序或者公升序排列的
②多項式相加或相減,下面給出多項式相加的部分實現
/*下面的函式實現兩個多項式的相加,要相加的鍊錶分別由pa和pb
指向(其中,pa,
pb都是分配了空間的頭結點)。
相加的結果直接由pa
指向的鍊錶儲存,即是在
pa鍊錶中新增或刪除(當係數因為相加為
0的情況下)一些結點,構成結果。
這裡要相加的鍊錶中指數都是按從小到大的順序排列好了的,是公升序鍊錶。
*/void add_poly(node *pa,node *pb)
else if (p->exp==q->exp)//假如鍊錶
1和鍊錶
2的指數相等,就要係數相加
else//如果相加後,係數不是
0,不需要保留任何乙個結點,在這裡刪除鍊錶
1的結點,下面刪除鍊錶
2的結點
p=pre->pnext;//p指向要比較的下乙個結點
//下面的**是進行鍊錶
2結點的刪除工作,因為指數相等,僅僅需要保留乙個結點就可以了
//而結果直接儲存在鍊錶
1中,所以,刪除鍊錶
2的結點。
u=q;
q=q->pnext;
free(u);
}else//如果鍊錶
2的當前節點指數小,那麼要把鍊錶
2的當前節點加入到結果鍊錶中(即是鍊錶1)
}if (q)//如果鍊錶
2比鍊錶
1長,那麼需要把鍊錶
2多餘的部分加入結果鍊錶中。鍊錶
1比鍊錶
2長,則什麼都不用做。
free(pb);
}同樣,設計出減法的核心**。
③輸出結果多項式
//程式源**
#include
#include
#include
struct
tagnode
;typedef
struct
tagnode node;
typedef
struct
tagnode* pnode;
//建立鍊錶
node *creat()}}
}//列印鍊錶
void
print(node *head)
else
}printf(
"0\n");}
void add_poly(node *pa,node *pb)
else if (p->exp==q->exp) //假如鍊錶
1和鍊錶
2的指數相等,就要係數相加
else //如果相加後,係數不是
0,不需要保留任何乙個結點,在這裡刪除鍊錶
1的結點,下面刪除鍊錶
2的結點
p=pre->pnext; //p指向要比較的下乙個結點
//下面的**是進行鍊錶
2結點的刪除工作,因為指數相等,僅僅需要保留乙個結點就可以了
//而結果直接儲存在鍊錶
1中,所以,刪除鍊錶
2的結點。
u=q;
q=q->pnext;
free(u);
}else//如果鍊錶
2的當前節點指數小,那麼要把鍊錶
2的當前節點加入到結果鍊錶中(即是鍊錶1)
}if (q) //如果鍊錶
2比鍊錶
1長,那麼需要把鍊錶
2多餘的部分加入結果鍊錶中。鍊錶
1比鍊錶
2長,則什麼都不用做。
free(pb);
}void
sub_poly(node *pa,node *pb)
else
if(p->exp==q->exp)
else
p=pre->pnext;
u=q;
q=q->pnext;
free(u);
}else}if
(q)free(pb);
};void
main()
getch();
}
(C )多項式加減法(一元)
easy 一元多項式表示 include includeusing namespace std struct node int main cout pre head for int i 1 i n i cout x cout cout int num 0 pre head for int i 1 i...
鍊錶應用 多項式的加減法
輸入兩個多項式輸出這兩個多項式的和或者差 include include includestruct duoxiangshi struct duoxiangshi create b s inde if a i b s inde if a i b s 0 inde if a i x else if a...
一元多項式的加 減法運算
問題描述 假設2個稀疏一元多項式分別由帶頭結點的有序單鏈表a和b儲存 指數項遞增有序 現要求設計乙個演算法,實現稀疏一元多項式的加減法計算。要求使用a和b的原儲存空間 運算後b不再存在,a鍊錶中儲存結果多項式 輸入中的單鏈表的長度不得在計算演算法中利用,僅作為建表使用。注意 加 減法計算後,如某一項...