題目描述
要求採用鍊錶形式,求兩個一元多項式的乘積:h3 = h1*h2。函式原型為:void multiplication( node * h1, node * h2, node * h3 )。
輸入:輸入資料為兩行,分別表示兩個一元多項式。每個一元多項式以指數遞增的順序輸入多項式各項的係數(整數)、指數(整數)。
例如:1+2x+x2表示為:<1,0>,<2,1>,<1,2>,
輸出:以指數遞增的順序輸出乘積: 《係數,指數》,《係數,指數》,《係數,指數》,
零多項式的輸出格式為:<0,0>,
前置**
#include #include typedef struct node
node;
void multiplication( node *, node * , node * );
void input( node * );
void output( node * );
void input( node * head )
else if ( c =='-' )
sign = -1;
else if( c >='0'&& c <='9' )
else if ( c == ',' )
}else if ( c == '>' )
}}void output( node * head )
printf("\n");
}int main()
輸出結果
這是我寫的第二個資料結構的**,有些心得想在這裡跟大家分享!首相,一元多項式相乘的原理大家都很熟悉了,我就不贅述了。這道題有前置**,所以得按照它的命名要求來,在對多項式進行處理的過程中,比如:當多項式的某一項係數為0時,需要刪掉這個項對應的結點,當然只能對p3所指的結果多項式操作,不能對前置**進行更改。
好,廢話不多說,直接上**(本人**寫得很爛,希望多多指正):
void multiplication(node * head1, node * head2, node * head3)
int coef3, exp3;
coef3 = coef1 * coef2; exp3 = exp1 + exp2;
while(p3)
p3 = p3->next;
}p3 = head3;
if(flag == 1)
//沒有找到次數相等的項,需要新建乙個結點,並且有序的插入p3
node * temp = (node *) malloc(sizeof(node));
node * prio; //用來表示當前p3所指項的前一項
temp->coef = coef3; temp->exp = exp3;
while(p3 && temp->exp > p3->exp)
p3 = prio;
temp->next = p3->next; p3->next = temp;
p2 = p2->next;
p3 = head3;
} p1 = p1->next;
p2 = head2->next;
p3 = head3;
} node * prio;
while(p3)
else
}}
(資料結構)一元多項式相乘
要求採用鍊錶形式,求兩個一元多項式的乘積 h3 h1 h2。函式原型為 void multiplication node h1,node h2,node h3 輸入資料為兩行,分別表示兩個一元多項式。每個一元多項式以指數遞增的順序輸入多項式各項的係數 整數 指數 整數 例如 1 2x x 表示為 1...
一元多項式相乘
include include include define max num 40 能夠處理的一元多項式的長度 define max coef 10 係數或冪 帶符號的情況下 能處理的最大長度 typedef struct inodeinode typedef struct inode poly t...
資料結構 一元多項式
void initlist polynode l 初始化多項式單鏈表 int getlength polynode l 求多項式單鏈表的長度 polynode getelem polynode l,int i 返回多項式單鏈表中第i個結點的指標 polynode locate polynode l,...