严蔚敏-数据结构,有有关问题请问
严蔚敏--数据结构,有问题请教
int cmp (term a,term b);//依a的指数值<(或=)(或者>)b的指数值分别返回-1、0、+1;
第43页:7行
switch(*cmp(a,b)) //这里为什么有*啊?
{
....
}
算法2.13也不是很明白。。发现看的好累啊。有没有大拿指导一下啊,改天买点分送你,或者送红包也行。
------解决方案--------------------
确实有问题,星号不应该有
------解决方案--------------------
晕,亦不懂
------解决方案--------------------
去掉*,书上也会有错的
------解决方案--------------------
int cmp (term a,term b);//依a的指数值<(或=)(或者>)b的指数值分别返回-1、0、+1;
第43页:7行
switch(*cmp(a,b)) //这里为什么有*啊?
{
....
}
算法2.13也不是很明白。。发现看的好累啊。有没有大拿指导一下啊,改天买点分送你,或者送红包也行。
------解决方案--------------------
确实有问题,星号不应该有
------解决方案--------------------
晕,亦不懂
------解决方案--------------------
去掉*,书上也会有错的
------解决方案--------------------
- C/C++ code
//AddPolyn.cpp //Add Polynomial Pa and Pb #include <iostream.h> #include <malloc.h> #include <conio.h> #include <stdio.h> struct Term { float coef; int expn; struct Term *next; }*LinkList; //typedef LinkList with polynomial void CreateList_L(struct Term * &L,int n) { //To Creatre a LinkList L with HeadNode int i; struct Term *p; L=(struct Term *)malloc(sizeof(Term)); L->next=NULL; for(i=n;i>0;--i) { p=(struct Term *)malloc(sizeof(Term)); cout<<"coef = "; cin>>p->coef; //Reverse order inputing for Creating a LinkList cout<<"expn = "; cin>>p->expn; p->next=L->next; L->next=p; }//end of for if(n) cout<<"Success to Create a LinkList !"<<endl; else cout<<"A NULL LinkList have been created !"<<endl; } //end of function CreateList char cmp(int qa_expn,int qb_expn) //cmp() function {//compare qa->expn and qb->expn if(qa_expn==qb_expn) return '='; else if(qa_expn>qb_expn) return'>'; else return '<'; }//end of cmp() function void AddPolyn(struct Term * &Pa,struct Term * &Pb) //AddPolyn() function { //Add the polynomial Pa and Pb struct Term *qa,*qb,*pre,*u; float sum; qa=Pa->next; //qa point to current node of Pa qb=Pb->next; //qb point to current node of Pb pre=Pa; //pre point to the HeadNode of Pa while(qa&&qb) //neither qa nor qb are NULL switch(cmp(qa->expn,qb->expn)) { case '<': pre=qa;qa=qa->next; break; case '=': //when the expn of qa == the expn of qb sum=qa->coef+qb->coef; if(sum!=0.0) { qa->coef=sum;pre=qa; //modify the current Node coef values of Pa } //end of if else { pre->next=qa->next; //otherwise qa->expn=qb->expn then delete current Node in Pa free(qa); } //end of else qa=pre->next;u=qb;qb=qb->next; free(u); break; case '>': u=qb->next; qb->next=qa; pre->next=qb; pre=qb; qb=u; break; } //end of switch if(!qa) pre->next=qb; //to link the rest of node of Pb free(Pb); cout<<endl; }//end of AddPolyn() function void main() //main() function { struct Term *Pa,*Pb,*p; int InitLNodeNum_Pa,InitLNodeNum_Pb; //the Init LinkNode Numbers cout<<"AddPolyn.cpp"<<endl<<"============="<<endl; cout<<endl<<"How many sessions of polynomial Pa do you want ? (eg. 4): "; cin>>InitLNodeNum_Pa; cout<<"Please input the Pa.coef and Pa.expn in descent order:"<<endl; cout<<"For example: (coef=3,expn=21);(coef=7,expn=9);(coef=4,expn=1);(coef=5,expn=0)"<<endl; CreateList_L(Pa,InitLNodeNum_Pa); //to create polynomial Pa LinkList with //the InitLNodeNum_Pa=input number +1 cout<<endl<<"How many sessions of polynomial Pb do you want ? (eg. 3): "; cin>>InitLNodeNum_Pb; cout<<"Please input the Pb.coef and Pb.expn in descent order:"<<endl; cout<<"For example: (coef=-7,expn=9);(coef=13,expn=6);(coef=8,expn=1)"<<endl; CreateList_L(Pb,InitLNodeNum_Pb); //to create polynomial Pb LinkList with //the InitLNodeNum_Pb=input number +1 AddPolyn(Pa,Pb); //AddPolyn Pa and Pb p=Pa; cout<<"Result:"<<endl; while(p->next) //output Pa=Pa+Pb { p=p->next; cout<<"(Pc.coef="<<p->coef<<","; cout<<"Pc.expn="<<p->expn<<")"<<endl; }// end of while cout<<endl<<"OK...!"<<endl; getch(); }//end of main() function