C++ 双结构多项式链表及其问题 #包括 使用名称空间std; 结构术语; 结构节点; 类型定义术语*termPtr; typedef节点*列表; 列表cons(整数度、整数系数、列表p); 结构术语 { 智力度; 内因系数; }; 结构体类型 { termPtr术语; 列表链接; }; 类多项式 { 私人: 列表多边形; 静态常量int变量_X='X'; 字符变量; 公众: 多项式():poly(NULL),variable(variable_X){}; 多项式(int-coef,int-deg); 多项式插入(termPtr t,列表p); int度()常数; 整数系数(整数n)常数; void setPrintVariable(char x){variable=x;} char getPrintVariable()常量{return variable;} friend const多项式readPoly(); 多项式a; void deletePoly(); friend常数多项式算子+(常数多项式&a,常数多项式&b); friend常数多项式算子*(常数多项式&a,常数多项式&b); }; 多项式::多项式(int c,int d) { if(poly==NULL)//编译器不理解此部分 poly=cons(c,d,poly); 否则,我把我的犯人放在这里只是为了做保龄球 poly=cons(c,d,poly); } 列表cons(int c、int d、list p) { termPtr aterm=新术语; aterm->coeff=c; aterm->degree=d; 列表q=新节点; q->term=aterm; q->link=p; 返回q; } void-printPoly(多项式a) { cout
原因C++ 双结构多项式链表及其问题 #包括 使用名称空间std; 结构术语; 结构节点; 类型定义术语*termPtr; typedef节点*列表; 列表cons(整数度、整数系数、列表p); 结构术语 { 智力度; 内因系数; }; 结构体类型 { termPtr术语; 列表链接; }; 类多项式 { 私人: 列表多边形; 静态常量int变量_X='X'; 字符变量; 公众: 多项式():poly(NULL),variable(variable_X){}; 多项式(int-coef,int-deg); 多项式插入(termPtr t,列表p); int度()常数; 整数系数(整数n)常数; void setPrintVariable(char x){variable=x;} char getPrintVariable()常量{return variable;} friend const多项式readPoly(); 多项式a; void deletePoly(); friend常数多项式算子+(常数多项式&a,常数多项式&b); friend常数多项式算子*(常数多项式&a,常数多项式&b); }; 多项式::多项式(int c,int d) { if(poly==NULL)//编译器不理解此部分 poly=cons(c,d,poly); 否则,我把我的犯人放在这里只是为了做保龄球 poly=cons(c,d,poly); } 列表cons(int c、int d、list p) { termPtr aterm=新术语; aterm->coeff=c; aterm->degree=d; 列表q=新节点; q->term=aterm; q->link=p; 返回q; } void-printPoly(多项式a) { cout,c++,C++,原因poly==NULL不是true是因为poly未初始化。初始化poly(NULL)仅在另一个构造函数中发生,而该构造函数未使用 可能最好是取消列表类型而代之以std::list(实际上,将列表与使用名称空间std;一起用作标识符是一个非常糟糕的主意) 类多项式 { 私人: 列表poly; 现在,poly是默认构造的,因此poly->empty()是true,您无需执行任何操作 对于cons,您可以调用list::push_back或list::insert;列表的一般类别是list::sp
poly==NULL
不是true
是因为poly
未初始化。初始化poly(NULL)
仅在另一个构造函数中发生,而该构造函数未使用
可能最好是取消列表
类型而代之以std::list
(实际上,将列表
与使用名称空间std;
一起用作标识符是一个非常糟糕的主意)
类多项式
{
私人:
列表poly;
现在,poly
是默认构造的,因此poly->empty()
是true
,您无需执行任何操作
对于
cons
,您可以调用list::push_back
或list::insert
;列表的一般类别是list::splice
。要在列表上迭代,请对类型为list::iterator
1的对象使用++
运算符。您所说的“编译器不理解poly为NULL”是什么意思?编译器在做什么?为什么你认为它是错误的?2.打印方法在什么方面不起作用?它做什么?你希望它能做什么?当我调试它时,构造中的条件(如果(poly==NULL))被忽略1。你说的“被忽略”是什么意思?你怎么知道它被忽略了?2.说到忽略东西,你忽略了我的第二个问题。在两个参数多项式构造函数中,你认为poly
的值应该在条目上是什么?为什么?对不起,我没有看到它。首先-我的意思是我的poly是空的,但它似乎不是空的。我应该使用什么条件语句用于确定它是否为空。第二,当我想在polymonery.exe:0xC0000005:访问冲突读取位置0xCCCC中的0x00c1166b处打印poly:Unhandled异常时,我出现了这个错误。@Ben:Lol,你今天对我很好。我想建议std:
,但倾向于避免弄乱它们的样式……我是更关注“什么清单”而不是使用限定名称。是的,我不会抓住这个。嗯……对于那些还不熟悉库使用的名称的人来说,最好先使用std::
而不是使用。我初始化了poly,我的一些问题得到了解决。你的其他问题对我来说非常高级。很抱歉,我无法获得它们.我的错
#include <iostream>
using namespace std;
struct Term;
struct Node;
typedef Term* termPtr;
typedef Node* list;
list cons(int degree,int coeff, list p);
struct Term
{
int degree;
int coeff;
};
struct Node
{
termPtr term;
list link;
};
class polynomial
{
private:
list poly;
static const int VARIABLE_X='X';
char variable;
public:
polynomial():poly(NULL),variable(VARIABLE_X){};
polynomial(int coef,int deg);
polynomial insert (termPtr t,list p);
int degree() const;
int coeff(int n) const;
void setPrintVariable (char x){variable=x;}
char getPrintVariable()const { return variable;}
friend const polynomial readPoly();
friend void printPoly(polynomial a);
void deletePoly();
friend const polynomial operator +(const polynomial &a,const polynomial &b);
friend const polynomial operator *(const polynomial &a,const polynomial &b);
};
polynomial::polynomial(int c,int d)
{
if(poly == NULL)//compiler doesnt understand this part
poly = cons(c,d,poly);
else // i put my cons here just to make the poly
poly=cons(c,d,poly);
}
list cons(int c,int d, list p)
{
termPtr aterm = new Term;
aterm->coeff=c;
aterm->degree=d;
list q = new Node;
q->term = aterm;
q->link = p;
return q;
}
void printPoly (polynomial a)
{
cout<<"[";
if(a.poly == NULL)
cout<<"]";
else
while(a.poly != NULL)
{
cout<<"("<<a.poly->term->coeff<<" X "<<a.poly->term->degree;
a.poly=a.poly->link ;
}
cout<<endl;
}
class polynomial
{
private:
list< Term > poly;