資源簡介
數據結構(C語言版)嚴蔚敏版的內容,用C語言寫的一元多項式的表示相加操作的實現,用vc6和其他的C語言運行軟件都能運行
代碼片段和文件信息
/*?Note:Your?choice?is?C?ID?*/
#include
#include
typedef?struct
{
float?coef;?//系數
int?expn;?//指數
}term;?//一元二項式的數據元素類型term
typedef?struct?LNode
{
term?data;?//一元多項式的節點類型的數據項的data域為term類型
struct?LNode?*next;?//定義LNode類型的指針域
}LNode?*linkList;?//linkList為指向LNode類型的指針,存放第一個節點的首地址
typedef?linkList?polynomial;
//比較兩個系數的大小
int?cmp(term?a?term?b)
{
int?flag;
if?(a.expn flag?=?-1;
else?if(a.expn?=?b.expn)
flag?=?0;
else?flag?=?1;
return?flag;
}
//建立多項式鏈表
void?CreatPolyn(polynomial?*P?int?t)?//p是雙重指針
{
polynomial?r?s;?//linkList?r?s;
term?para;
int?i;
*P?=?(LNode?*)malloc(sizeof(LNode));?
//p指向多項式鏈表的頭結點(不是第一個元素)的地址,存放這個地址內容的地址
//*p指向頭結點,存放這個頭結點的地址
r?=?*P;//r為指向頭結點的指針
for(i?=?0;i {
s?=?(LNode?*)malloc(sizeof(LNode));?//s指向一個節點元素
printf(“輸入系數c和指數e:\n“);
scanf(“%f%d“?¶.coef?¶.expn);
s->data.coef?=?para.coef;
s->data.expn?=?para.expn;
r->next?=?s;?//開始放入第一個元素(首元素)
r?=?s;?//移動頭指針
}
r->next?=?NULL;
}
//兩多項式相加顯示得到的新的多項式
polynomial?AddPolyn(polynomial?pa?polynomial?pb)//pa?pb是兩個指向頭結點的指針
{
polynomial?newp?p?q?s?pc;
float?sum;
p?=?pa->next;?//p指向pa的第一個元素?
q?=?pb->next;?//q指向pb的第一個元素
newp?=?(LNode?*)malloc(sizeof(LNode));?//pc指向新多項式pc的頭結點
pc?=?newp;
while(p&&q){
switch(cmp(p->data?q->data))
{
case?-1:
s?=?(LNode*)malloc(sizeof(LNode));?//分配一個節點
s->data.coef?=?p->data.coef;
s->data.expn?=?p->data.expn;
pc->next?=?s;
評論
共有 條評論