#include
#include
#include
#define max_num 40 //能夠處理的一元多項式的長度
#define max_coef 10 //係數或冪(帶符號的情況下)能處理的最大長度
typedef
struct inodeinode;
typedef
struct inode *poly;
typedef
struct assistarrayassistarray;
assistarray aarray[max_num];//輔助陣列
int stringtonum(char* s,int *i,int n,int flag);
int createassistarray(char* s,int n);
poly createpolynomial(int m);
poly multiplypolynomial(poly heada,poly headb);
void outputpolynomial(poly head);
void outputassistarray(int m);
void outputlist(poly head);
int getlength(char* s);
void destroypolynomial(poly head);
int stringtonum(char* s,int *i,int n,int flag) //字元數向整型數轉換的函式
}else
if(flag==1||*i==0)
}*i=j-1;
return atoi(num);
}int createassistarray(char* s,int n)
//處理一元多項式最後一項為常數,或期間某項為零次冪
}else
if(flag==1)
}else
if(k==0&&s[k]=='x') aarray[h].coef=1; //處理類似於x+1的係數情況
else
if(s[k]=='+'&&s[k+1]=='x') aarray[h].coef=1; //處理2x^2+x+1中x的係數情況
else
if(s[k]=='-'&&s[k+1]=='x') aarray[h].coef=-1; //處理2x^2-x+1中x的係數情況
if(s[k-1]=='x'&&s[k]=='^') flag=1; //開始處理冪
if(s[k]=='x'&&s[k+1]!='^') //處理2x+1中x的冪的情況
}return h;
}poly createpolynomial(int m)
newp=malloc(sizeof(inode));
newp->coef=aarray[i].coef;
newp->exp=aarray[i].exp;
newp->next=pre->next;
pre->next=newp;
}return head;
}poly multiplypolynomial(poly heada,poly headb)
if(tempn->next==null&&tempn->exp!=exp)
else
}tempb=tempb->next;
}tempa=tempa->next;
}return headn;
}void outputpolynomial(poly head)//係數為0,1,-1時都要特殊處理
else
if(temp->exp==1)
else
printf("%d",temp->coef);
if(begin==1) begin=0;
temp=temp->next;
}printf("\n");
} void outputassistarray(int m)
}void outputlist(poly head)
}int getlength(char* s)
return i;
}void destroypolynomial(poly head)
}int main()
輸入部分依舊很麻煩,要考慮各種特別情況,而且一般都是寫完了才想起來,所以常常出現問題。
測試用的輸出函式一定要簡潔而且正確,不然會浪費大量時間。
鍊錶迴圈時一定要多問自己這幾個問題:a)這輪迴圈是否需要初始化?b)這輪迴圈後,temp指標在**?c)是否需要刪除指標?d)會不會有指標為null情況,但你寫了ptr->num類似的錯誤**?
the end
一元多項式的相乘
1 include 2 include3 4using namespace std 56 7 define maxsize 20 89 typedef struct lnode 10lnode,linklist 1516 17int createlist l linklist l,int n 18 ...
一元多項式
一元多項式 功能 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...