问答题
用单链表存储多项式的结构定义如下:
Typedef struct Term{ //多项式的项
float coef; //系数
int exp; //指数
struct Term
*
link;//链指针
}
*
Polynomial;
试编写一个算法,输入一组多项式的系数和指数,按指数降幂的方式建立多项式链表,要求该链表具有表头结点。如果输入的指数与链表中已有的某一个项的指数相等,则新的项不加入,并报告作废信息。整个输入序列以输入系数为0标志结束。算法的首部为Polynomial createPoly();
【正确答案】
【答案解析】本题程序使用了一些C++的常用语句,如:“<<”输出符,“>>”输入符,“cout”输出到屏幕,“cin”从键盘输入,“endl”换行格式符,“new”动态存储分配。
Polynomial createPoly(){
struct pnode
*
head,
*
p,
*
pre,
*
s;
float c;int e,i=0;
cout <<”建立一个多项式的单链表”<<endl; //提示
head=new Term; //创建表头结点和表头指针
head->exp=-1;head->link=NULL; //表头结点的exp标志为-1
while(1){ //创建结点
cout<<”输入第”<<++i<<”个项:”; //提示:输入第i个项
cin>>c>>e; //输入:c系数,e指数
cout<<endl;
if(c==0)break; //输入系数为0,退出
S=new Term;s->coef:c;s->exp=e; //创建结点
p=head;pre=NULL; //寻找按升幂插入的位置
while(p!=NULL&&P->exp>e){pre=p;p=p->link;}
if(p!=NULL&&p->exp==e) //指数与链中某项指数相等
cout<<”输入项的指数重复,此次输入作废!”<<endl;
else{s->link=p;pre->link=s;} //按升幂插入
}
return head;
}