希望各位大佬帮我看看我这个一元多项式的加法哪出问题了

Changanzy 2019-10-19 09:31:01
#include <iostream>
using namespace std;
typedef struct Node* ProtoNode;
typedef ProtoNode List;
typedef ProtoNode Position;
struct Node
{
float coef;//系数
int expn;//指数
List next;
};
void CreatePolynomial(List L)
{
List p=L;
float coe;
int exp;
while(cin>>coe>>exp)
{
if(coe>0&&exp>0)
{
List pnewnode=new Node;
pnewnode->coef=coe;
pnewnode->expn=exp;
pnewnode->next=nullptr;
p->next=pnewnode;
p=pnewnode;
}
else break;
}
}
int IsEmpty(List L)
{
if(L->next==NULL)
return 1;
else return 0;
}
int IsLast(Position p,List L)
{
return p->next==NULL;
}
void PrintPolynomial(List L)
{
List p=L->next;
cout<<"这是你的多项式:";
while(p!=nullptr)
{
cout<<"系数"<<p->coef<<" "<<"指数:"<<p->expn<<" ";
p=p->next;
}
cout<<endl;
}
Position FindPrevious (int x,ProtoNode phead)
{
Position p;
p=phead;
while(p->next!=NULL && p->next->expn!=x)
p=p->next;
return p;
}
void Delete(int x,ProtoNode phead)
{
Position p,TmpCell;
p=FindPrevious(x,phead);
if(!IsLast(p,phead))
{
TmpCell=p->next;
p->next=TmpCell->next;
free(TmpCell);
}

}
ProtoNode Add(List L1,List L2)
{
//cout<<1;
List P1=L1->next;
//cout<<2;
List P2=L2->next;
//cout<<3;
while(P1)
{
// cout<<7<<endl;
if(P1->expn==P2->expn)
{
cout<<8<<endl;
P1->coef+=P2->coef;
Delete(P2->expn,L2);
PrintPolynomial(L2);
P1=P1->next;
P2=L2;
}
else P2=P2->next;
if(P2==nullptr)
{
P1=P1->next;
P2=L2;
}
}
P2=L2->next;
P1->next=P2;

cout<<4<<endl;
}
int main()
{

List head1=nullptr;
head1=new Node;
head1->coef=0;
head1->expn=0;
head1->next=nullptr;
cout<<"请输入你的第一个多项式:"<<endl;
CreatePolynomial(head1);
PrintPolynomial(head1);

List head2=nullptr;
head2=new Node;
head2->coef=0;
head2->expn=0;
head2->next=nullptr;
cout<<"请输入你的第二个多项式:"<<endl;
CreatePolynomial(head2);
PrintPolynomial(head2);

Add(head1,head2);
cout<<"相加后等于:"<<endl;
PrintPolynomial(head1);
}
在我相加函数那,经过我调试,好像把L2的结点接到L1的时候出了问题,但是我想不清楚为什么会出问题,直接指针指过去不久可以了嘛
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wowpH 2019-10-19
  • 打赏
  • 举报
回复
		if (P1->expn == P2->expn) {
			cout << 8 << endl;
			P1->coef += P2->coef;
			Delete(P2->expn, L2);
			PrintPolynomial(L2);
			P1 = P1->next;
			//P2 = L2;
			P2 = L2->next;
		} else P2 = P2->next;
		if (P2 == nullptr) {
			P1 = P1->next;
			P2 = L2;
		}
Changanzy 2019-10-19
  • 打赏
  • 举报
回复
P2=L2->next;
P1->next=P2;
我把这个改成了:
P1=L2->next;
依然不能把L2接到L1后面,这是为什么呢
内容概要:本文研究油浸式变压器在不同气候条件下的能量极限问题,通过Matlab代码实现建模与仿真,深入分析环境温度、湿度等气候因素对变压器热稳定性、负载能力及运行安全性的影响,进而确定其在多种工况下的最大能量承载极限。研究采用多智能体方法提升模型的适应性与仿真精度,综合考虑热平衡方程与环境参数输入,旨在为变压器的设计优化、容量规划、动态负载管理及智能电网中的可靠性分析提供科学依据和技术支撑。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电气工程、能源系统仿真、电力设备设计等相关领域的科研人员与工程师,特别适合研究生及工作1-5年的专业技术人才; 使用场景及目标:①评估油浸式变压器在极端气候环境下的安全运行边界;②优化变压器的负载调度与能效管理策略;③支持智能电网背景下设备级动态容量规划与韧性电网建设;④为高可靠性供电系统的设计与运维提供理论参考; 阅读建议:学习者应结合提供的Matlab代码深入理解建模流程,重点掌握热传导模型构建、环境变量设定、多智能体协同机制及仿真参数调优方法,并通过调整气候条件进行多场景仿真实验,以深化对变压器能量极限形成机理的认知。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧