设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1118|回复: 1
打印 上一主题 下一主题

运行程序遇到的最大问题,急待解决!

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-6 01:41:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我写了一个求多项式的程序但是刚刚调试到输入第二个多项式后就是显示内存不能为“written”,不知道是为什么??程序如下:
#include<iostream>
using namespace std;
typedef struct{
float coef;//系数
int exp;//指数
}number;
typedef struct Lnode{
number data;
Lnode *next;
}*Link;
typedef struct{
Link head,tail;
int len;
}Linklist;
int initList(Linklist &L)//构造一个空的线性链表L
{
L.head=new Lnode;
if(!L.head)
return 0;
else
{
L.head=0;
return 1;
}
}
int makeNode(Link &p,number &e)//分配由P指向E的结点
{
p=new Lnode;
if(!p)
return 0;
else
{
p->data=e;
p->next=0;
return 1;
}
}
int insFirst(Link &h,Link &s)//已知H指向表的头结点,将S所指结点插入第一个结点之前
{
s->next=h->next;
h->next=s;
return 1;
}
void setCurElem(Link &p,number e)//已知P指向表中的一个结点,用E更新P所指结点的数据元素的值
{
p->data=e;
}
Link getHead(Linklist &L)
{
return L.head;
}
Link nextPos(Linklist &L,Link &p)//返回P的后继结点的位置,若无后继,则返回0
{
if(p->next==0)
return 0;
else
return p->next;
}
void creatPloyn(Linklist &L,int m)//输入M项的系数和指数,建立一元多项式
{
initList(L);Link s;
Link h=getHead(L);
number e;
e.coef=0.0;e.exp=-1;
setCurElem(h,e);
for(int i=1;i<=m;i++)
{
cout<<"请输入第"<<i<<"项的系数:";
cin>>e.coef;
cout<<endl;
cout<<"请输入第"<<i<<"项的指数:";
if(makeNode(s,e))
insFirst(h,s);
}
}
int listEmpty(Linklist &L)//判断表是不是为空
{
if(L.head->next==0)
return 0;
else
return 1;
}
void append(Linklist &L,Link s)
{
Link p;
if(L.head->next==0)
L.head->next=s;
else
{
p=L.head;
while(p->next!=0)
{p=p->next;}
p->next=s;
}
}
int compare(number a,number b)
{
if(a.exp>b.exp)
return 1;
else if(a.exp=b.exp)
return 0;
else if(a.exp<b.exp)
return -1;
}
void addPloyn(Linklist &La,Linklist &Lb,Linklist &Lc)
{
Link ha,hb,pa,pb,p;
number a,b,c;float sum;
if(!initList(Lc)) return;
ha=getHead(La);hb=getHead(Lb);
pa=nextPos(La,ha);pb=nextPos(Lb,hb);
while(!listEmpty(La)&&!listEmpty(Lb))
{
a=getCurElem(pa);b=getCurElem(pb);
switch(compare(a,b))
{
case -1:
c=a;
makeNode(p,c);append(Lc,p);pa=nextPos(La,pa);
break;
case 0:
sum=a.coef+b.coef;
if(sum!=0.0)
{
c.coef=sum;c.exp=a.exp;
makeNode(p,c);append(Lc,p);
pa=nextPos(La,pa);pb=nextPos(Lb,pb);
break;
}
else
{
pa=nextPos(La,pa);pb=nextPos(Lb,pb);
break;
}
case 1:
c=b;
makeNode(p,c);append(Lc,p);pb=nextPos(Lb,pb);
break;
}
}
if(pa==0)
{
while(pb!=0)
{
c=pb->data;
makeNode(p,c);append(Lc,p);pb=nextPos(Lb,pb);
}
}
else
{
while(pa!=0)
{
c=pa->data;
makeNode(p,c);append(Lc,p);pa=nextPos(La,pa);
}
}
}

void printPloyn(Linklist &L)
{
Link p;
if(L.head==0)
return;
else
{
p=L.head->next;
while(p!=0)
{
cout<<p->data.coef<<"x^"<<p->data.exp<<"+";
p=p->next;
}
}
}


int main()
{
Linklist La,Lb,Lc;
int a,b;
cout<<"请输入第一个多项式的项数:";
cin>>a;
cout<<"请输入第二个多项式的项数:";
cin>>b;
cout<<endl;
cout<<"现在为您创建第一个多项式如下:"<<endl;
creatPloyn(La,a);
printPloyn(La);
cout<<"现在为您创建第二个多项式如下:"<<endl;
creatPloyn(Lb,b);
printPloyn(Lb);
cout<<"两个多项式的和是:"<<endl;
addPloyn(La,Lb,Lc);
printPloyn(Lc);
return 0;
}
2#
发表于 2009-11-6 01:41:20 | 只看该作者
你这问题也太多了,吃完饭再帮你看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 14:42 , Processed in 0.106106 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表