标题:运行程序遇到的最大问题,急待解决!
只看楼主
yfgo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-27
 问题点数:0 回复次数:1 
运行程序遇到的最大问题,急待解决!

我写了一个求多项式的程序但是刚刚调试到输入第二个多项式后就是显示内存不能为“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;
}

搜索更多相关主题的帖子: 急待 运行 
2007-05-30 20:15
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
你这问题也太多了,吃完饭再帮你看看

2007-06-01 12:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-143624-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018216 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved