實現一元多項式

2022-05-01 11:18:10 字數 3984 閱讀 4531

1

//利用鍊錶的方式給輸入的項邊插入排序邊進行合併同類項;

2 #include3 #include4

5struct function//

一元多項式6;

1112

struct function *insert(struct function *head,struct function *p)//

插入並排序一元多項式

1325 q2=q1=head;//

q1和q2節點都指向頭節點;

26while(q1!=null)

2735

if(q1->exp==p->exp)//

指數相同則係數相加,如果係數為0則釋放q1指向頭節點;

3645

else

4649}50

else

51break;52

}53else

if(q1->expexp)//

如果插入的數指數大於q1的指數則把插入的數接在q1後面

5458

else

//如果碰到插入的數的指數小於q1的指數

5967

else

//把要插入的數放在q2-q1中間,q26873}

74}75return

head;

76};

7778

void print(struct function *p)//

輸出多項式。

7987

while(p1!=null)

8898

else

105}

106else

107117

else

124}

125else

126134

else

141}

142}

143 p1=p1->next;

144}

145 printf("\n"

);146

}147

148149

struct function *create()//

建立這樣乙個多項式鍊錶,插入多項式。

150165

}166

return

head;

167}

168169

170void add(struct function *p1,struct function *p2)//

q為相加的最後結果的鏈

171188

}189

else

if(p2==null)//

和上面同理:如果p2先加完則讓p後面部分為p1後面的部分。

190200

}201

else

//不然的話就直接比較每一項,指數相同就進行係數相加,否則指標後移,比較後面一項。

202212

else

if(p1->exp==p2->exp)//

p1,p2相同的項合併,係數相加賦給p

213224

else

225229

}230

else

//p2有但是p1沒有,且p2的指數小於p1的指數則把這部分節點加給p

231239

}240

}241 q->next=null;

242print(head);

243};

244245

void sub(struct function *p1,struct function *p2)//

和add部分相同,只是把相加的部分變成減號

246263

}264

else

if(p2==null)

265275

}276

else

277287

else

if(p1->exp==p2->exp)

288299

else

300304

}305

else

306314

}315

316}

317 q->next=null;

318print(head);

319};

320321

322323

324int

main()

325

//利用鍊錶的方式給輸入的項邊插入排序邊進行合併同類項;#include#include

struct function//一元多項式;

struct function *insert(struct function *head,struct function *p)//插入並排序一元多項式    q2=q1=head;//q1和q2節點都指向頭節點;    while(q1!=null)            if(q1->exp==p->exp)//指數相同則係數相加,如果係數為0則釋放q1指向頭節點;                        else                            }            else                break;        }        else if(q1->expexp)//如果插入的數指數大於q1的指數則把插入的數接在q1後面                else//如果碰到插入的數的指數小於q1的指數                    else//把要插入的數放在q2-q1中間,q2next=q;                q->next=q1;                break;            }        }    }    return head;};

void print(struct function *p)//輸出多項式。    while(p1!=null)                 else        }        else                            else            }            else                                else            }        }        p1=p1->next;    }    printf("\n");}

struct function *create()//建立這樣乙個多項式鍊錶,插入多項式。    }        return head;}

void add(struct function *p1,struct function *p2)//q為相加的最後結果的鏈        }        else if(p2==null)//和上面同理:如果p2先加完則讓p後面部分為p1後面的部分。                }        else//不然的話就直接比較每一項,指數相同就進行係數相加,否則指標後移,比較後面一項。                    else if(p1->exp==p2->exp)//p1,p2相同的項合併,係數相加賦給p                             else                             }            else//p2有但是p1沒有,且p2的指數小於p1的指數則把這部分節點加給p                    }    }    q->next=null;    print(head);};

void sub(struct function *p1,struct function *p2)//和add部分相同,只是把相加的部分變成減號        }        else if(p2==null)                }        else                    else if(p1->exp==p2->exp)                             else                             }            else                    }

}    q->next=null;    print(head);};

int main()

一元多項式

一元多項式 功能 1 求解2個一元多項式的和 2 求解2個一元多項式的差 3 列印一元多項式 注 3 這個本來不算是乙個功能,但是發現列印一元多項式的時候問題很多。例如 1x應該列印成 x,x 0不應該應該列印出來 1.結點的定義 typedef struct polynomial polynomi...

一元多項式

include include using namespace std 定義結構體 typedef struct polynode polynode,polylist 建立關於多項式結構體的單鏈表,以係數0結束輸入 polylist polycreate 尾插法建立單鏈表 rear next nul...

一元多項式求導

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 設計函式求一元多項式的導數。輸入格式 以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 以與輸入相同的格式輸出導數多項式非零項的係數和指數。數...