大家帮我看一下这个程序的问题(函数无法被执行)在哪?
//实现两个多项式(每项用一个链表结点表示)的相乘
#include <iostream>
using namespace std;
struct SLink //定义链表结点类型
{
float ceof; //浮点类型的系数
int exp; //整型的指数
SLink *next;
};
SLink *create(SLink *L); //创建多项式的函数声明
void add(SLink *La,SLink *Lb); //两个多项式相加的函数声明
void print(SLink *L) //输出多项式的函数
{
SLink *p;
p=L-> next;
while(!p)
{
if(p-> exp==0) cout < <p-> ceof;
else cout < <p-> ceof < < "x^ " < <p-> exp;
if(!p-> next) cout < < "+ ";
p=p-> next;
}
cout < <endl;
}
int compare(int a,int b) //比较两个数的大小的函数
{
if(a==b) return 0;
else if(a> b) return -1;
else if(a <b) return 1;
}
void main() //主函数
{
SLink *pa, *pb, *p, *q;
pa=pb=p=q=NULL;
cout < < "请依次输第一个多项式各项的系数和指数,以同时为0结束 " < <endl;
SLink *La=new SLink; La=create(La);
cout < < "第一个多项式为: "; print(La);
cout < < "请依次输第二个多项式各项的系数和指数,以同时为0结束 " < <endl;
SLink *Lb=new SLink; Lb=create(Lb);
cout < < "第二个多项式为: "; print(Lb);
pa=La-> next; pb=Lb-> next;
int i=0;
SLink *Lc=new SLink; Lc-> next=NULL;
SLink *Ld=new SLink; Ld-> next=NULL;
q=Lc;
while(!pb)
{
pa=La-> next;
while(!pa)
{
if(i> =1) q=Ld;
p=new SLink; p-> next=NULL;
p-> ceof=pa-> ceof*pb-> ceof;
p-> exp=pa-> exp+pb-> exp;
q-> next=p;q=p;
pa=pa-> next;
}
pb=pb-> next;
i++;
if(i> =2) add(Lc,Ld);
}
//print(La);
//print(Lb);
print(Lc);
delete Ld;
}
SLink *create(SLink *L) //create函数实现
{
SLink *p, *q;
//L=new SLink;
//L=new SLink;
L-> next=NULL;//L-> ceof=0.0;L-> exp=0;
p=q=new SLink;
cin> > p-> ceof;
cin> > p-> exp;
p-> next=NULL;
while(p-> ceof!=0||p-> exp!=0)
{
if(L-> next==NULL) L-> next=p;
else q-> next=p;q=p;
p=new SLink;p-> next=NULL;
cin> > p-> ceof;
cin> > p-> exp;
}
q-> next=NULL;
delete p;
return L;
}
void add(SLink *La,SLink *Lb) //add函数实现,相加之后的多项式保存于La中
{
SLink *qa, *qb, *pa, *pb, *del=NULL;
qa=La;pa=La-> next;
qb=Lb;pb=Lb-> next;
int sub; float sum;
while(!pa-> next&&!pb-> next)//此处将La Lb分别修改为pa pb
{
sub=compare(pa-> exp,pb-> exp);
switch(sub)
{
case -1:
/*qa-> next=pa;*/ qa=pa; pa=pa-> next; break;
case 1:
qa-> next=pb; pb-> next=pa;
pb=pb-> next; qa=qa-> next;
break;
case 0:
sum=pa-> ceof+pb-> ceof;
if(sum!=0.0)
{
pa-> ceof=sum; pa=pa-> next;
del=pb; pb=pb-> next;
delete del;
}
else
{
del=pa; qa-> next=pa-> next;
pa=pa-> next; delete del;
del=pb; pb=pb-> next; delete del;
}
break;
//default:break;
}
if(pa==NULL) qa-> next=pb;
}
}
问题是print函数始终无法被执行,而且调试时总是出现以下信息:
Loaded 'ntdll.dll ', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll ', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shimeng.dll ', no matching symbolic information found.
运行结束后出现下面的提示信息:
Loaded 'ntdll.dll ', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll ', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shimeng.dll ', no matching symbolic information found.
The thread 0xAFC has exited with code 1 (0x1).
The program 'D:\Programming\Microsoft Visual Studio\Example\exp_005\Debug\mul.exe ' has exited with code 1 (0x1).
不知道是什么回事,高手能帮忙运行一下看看吗,找出问题
谢谢了~~~
[解决办法]
你的问题都出在while循环里的条件问题,仔细想想吧!
[解决办法]
变量名看的头晕
调试的时候出现的信息是正常的,应为你用的是release的库,没有调试信息的