チェーンは多項式の相乗を実現します.
15141 ワード
チェーンは多項式の相乗を実現します.
データ構造を初めて勉強しました.私はこの初心者で、教程を見ていませんでした.
コードを先に入れて、コードにコメントがあります.コメントをcoutに変えてもいいです.
後で詳しい補足説明をします.
問題の説明:
2つの多項式を入力して、多項式の一番目の数は項数です.その後は2つのペア、1つの係数、1つの指数、多項式の順序によって、係数の降順になります.1つの鎖の表で2つの多項式の相乗を実現します.
チェーンで実現します.
解決策:
最初は二つの多項式の第一項を貯金します.これは結果多項式の第一項です.順序が整いましたので、後にはこの項目の指数が大きくないので、この項目の本位を考慮しなくてもいいです.その後はチェーン表の各項目、三つの基本過程を通して、本位を足して、前に挿入して、後ろに挿入します.実現しました.二つの多項式が乗ります.この新たに構築されたチェーンは結果多項式です.
上のコード:
転載先:https://www.cnblogs.com/Cherrison-Time/p/10578408.html
データ構造を初めて勉強しました.私はこの初心者で、教程を見ていませんでした.
コードを先に入れて、コードにコメントがあります.コメントをcoutに変えてもいいです.
後で詳しい補足説明をします.
問題の説明:
2つの多項式を入力して、多項式の一番目の数は項数です.その後は2つのペア、1つの係数、1つの指数、多項式の順序によって、係数の降順になります.1つの鎖の表で2つの多項式の相乗を実現します.
チェーンで実現します.
解決策:
最初は二つの多項式の第一項を貯金します.これは結果多項式の第一項です.順序が整いましたので、後にはこの項目の指数が大きくないので、この項目の本位を考慮しなくてもいいです.その後はチェーン表の各項目、三つの基本過程を通して、本位を足して、前に挿入して、後ろに挿入します.実現しました.二つの多項式が乗ります.この新たに構築されたチェーンは結果多項式です.
上のコード:
1 #include
2 #define ends " "; //linux ends
3 using namespace std;
4
5 typedef struct polynomial
6 {
7 int coef; //
8 int index; //
9 polynomial * next;
10 }term,*pTerm;
11
12 pTerm creatterm();
13 void showterm(pTerm);
14 pTerm mult(pTerm,pTerm);
15
16 int main(){
17 pTerm term1,term2,termAns;
18 term1=creatterm();
19 term2=creatterm();
20 cout<<" :"<<endl;
21 showterm(term1);
22 showterm(term2);
23 cout<<" :"<<endl;
24 termAns=mult(term1,term2);
25 showterm(termAns);
26 return 0;
27 }
28 //
29 pTerm creatterm(){
30 int val,m,c,f;
31 pTerm phead, ptail;
32 phead = (pTerm)malloc(sizeof(term));
33 ptail=phead;
34 ptail->next=NULL;
35 cout<<" :";
36 cin>>m;
37 for(int i=0;i){
38 cin>>c>>f;
39 pTerm pnew=(pTerm)malloc(sizeof(term));
40 pnew->coef=c;
41 pnew->index=f;
42 ptail->next=pnew;
43 pnew->next=NULL;
44 ptail=pnew;
45 }
46 phead->coef=m;
47 return phead;
48 }
49 //
50 void showterm(pTerm phead){
51 pTerm p;
52 p=phead->next;
53 while(p!=NULL){
54 cout<coef <<" "<< p->index<<" ";
55 p=p->next;
56 }
57 cout<<endl;
58 }
59 //
60 pTerm mult(pTerm t1,pTerm t2){
61 pTerm p1,p2,p,pre,phead;// p
62 int n=1; //
63 //
64 p=(pTerm)malloc(sizeof(term));
65 pre=(pTerm)malloc(sizeof(term));
66 phead=(pTerm)malloc(sizeof(term));
67 p1=t1->next; //
68 p2=t2->next; //
69 //p
70 p->coef=p1->coef*p2->coef;
71 p->index=p1->index+p2->index;
72 p->next=NULL;
73 pre->next=p;
74 phead->next=p;
75 //
76 while(p1!=NULL){
77 p2=t2->next;
78 while(p2!=NULL){
79 p=phead->next;
80 pTerm pnew=(pTerm)malloc(sizeof(term));
81 pnew->coef=p1->coef*p2->coef;
82 pnew->index=p1->index+p2->index;
83 pnew->next=NULL;
84 for(int i=0;icoef*t2->coef;i++)
85 {
86 if(p->index==pnew->index){ //
87 if(n==1) break; //
88 else{p->coef+=pnew->coef;
89 n++;
90 break;}
91 }else if(p->index>pnew->index){
92 pre=p;
93 if(p->next==NULL) { //
94 p->next=pnew;
95 n++;
96 break;
97 }
98 else p=p->next;
99 }else if(p->indexindex) { //
100 pre->next=pnew;
101 pnew->next=p;
102 pre=pnew;
103 n++;
104 break;
105 }
106 }
107 p2=p2->next; //p2
108 }
109 p1=p1->next; //p1
110 }
111 cout<" "; //
112 return phead;
113 }
転載先:https://www.cnblogs.com/Cherrison-Time/p/10578408.html