从控制台分别输入两个关于x的多项式,其中各项系数均为整数,输入时乘号不可忽略,乘方以“^”表示,x的指数按降序排列。各操作数、运算符之间用空格分隔。输出两个多项式相乘的结果,其中x的指数按降序排列。要求:使用队列的顺序存储实现。
你最好不是广医的
不知道你这个问题是否已经解决, 如果还没有解决的话:Tree * findNode(Tree * p ,int x){
Tree *temp = p;
if(p){
if(p->left!=NULL || p->rigth!=NULL){
if(p->left->x == x){
if(p->rigth){
p = p->rigth;
printf("\n find succee %d",p->x);
return p;
}
}
if(p->rigth->x == x){
if(p->left){
p = p->left;
printf("\n find succee %d",p->x);
return p;
}
}
}
temp = findNode(p->left,x);
if(temp){
return temp;
}
temp = findNode(p->rigth,x);
return temp;
}else {
return NULL;
}
}
参考GPT和自己的思路:好的,针对您的问题,我可以给出以下的步骤:
首先需要定义一个结构体,用于存储多项式中的每一项,包括系数和指数。比如:
typedef struct {
int coef; // 系数
int expn; // 指数
} Term;
接着,可以通过队列的顺序存储实现对多项式的输入和输出。具体实现步骤如下:
(1) 输入多项式:从控制台读入多项式字符串,逐个提取每一项的系数和指数,创建一个结构体,把系数和指数分别存储在结构体的 coef 和 expn 字段中,然后把结构体插入到队列中。重复以上步骤直到读取完整个多项式。
(2) 输出多项式:遍历队列,依次输出每一项的系数和指数,输出格式要按照要求进行合理的调整,比如插入“+”号、“-”号、“x”等等。
在输入完两个多项式之后,需要实现多项式相乘的算法,具体步骤如下:
(1) 创建一个空队列,用于存储相乘后的多项式。
(2) 遍历第一个多项式的每一项,对于每一项,再遍历第二个多项式的每一项,并计算它们的积。把积的系数、指数相加,创建一个新的 Term 结构体,然后把它插入到相乘后的新队列中。
(3) 把新队列中的项按照指数大小进行升序排序。
(4) 对于系数相同的项,把它们合并成一项,并将其系数相加。
(5) 最后,输出相乘后的多项式即可。
希望以上步骤对您有所帮助。
数据结构怎么你了(msq不配吗