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;