| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 885 人关注过本帖, 1 人收藏
标题:大家帮我看一下,是什么问题
只看楼主 加入收藏
x6988312
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2012-3-26
结帖率:100%
收藏(1)
已结贴  问题点数:15 回复次数:10 
大家帮我看一下,是什么问题
这是我这次试验的题目:
private:
           int exp;//指数
           float coef;//系数
           Node *next;
public:
    Node();//从键盘接收输入的系数,指数
    Node(float cf,int ep);//cf为系数,ep为指数
   
};
Node *head=NULL;
//完成以下定义
Node::Node()
{
}
//完成以下定义
Node::Node(float cf,int ep)
{
}
定义一个全局指针Node *head(指向多项式链表中的第一项节点),
要求:
1、Node的构造函数自动将构造的对象插入head链表中;
2、main函数结束时依次释放链表中的的节点。

//验证定义
void main()
{
   
}
这里我写的代码:
# include<iostream.h>
# include<stdio.h>
class node
{
private:
    int exp;
    float coef;
    node *next;
public:
    node(int ep,float cf);
    node();
    void output();
    void del();
};
node *head=NULL;
node::node(int ep,float cf)
{
    exp=ep,coef=cf;
}
node::node()
{
    node *p=this;
    p->next=this;
    this->next=NULL;
    ::head=this;
    p=::head;
}
void node::output()
{
    node *q;
    while(1)
    {
        cout<<q->coef<<"^"<<exp<<endl;
        q=q->next;
        if(q->next==NULL)
            break;
    }
}
void node::del()
{
    node *p,*q;
    q=::head;
    while(q->next!=NULL)
    {
        p=q->next;
        delete q;
        q=p;
    }
}
void main()
{
    int ep,i=1;
    float cf;
    node *q,*p;
    node a[10];
    cout<<"please input exp and coef"<<endl;
    cin>>ep>>cf;
    a[0]=node(ep,cf);
    q=::head=&a[0];
    while(1)
    {
        cout<<"please input exp and coef,if finish press 0"<<endl;
        cin>>ep>>cf;
        if(ep==0||cf==0)
            break;
        a[i]=node(ep,cf);
        i++;
    }
    ::head=q;
    a[0].outpu()t;
    a[0].del();
}
但不为什么,没有输出,也就是根本运行不到ouput与del成员函数中,大家帮我看一下,错在哪里,谢谢了

[ 本帖最后由 x6988312 于 2012-11-26 10:13 编辑 ]
搜索更多相关主题的帖子: 系数 private public 多项式 
2012-11-25 21:46
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
a[0].output;
    a[0].del;
这样调用函数?括号跑哪去了?

My life is brilliant
2012-11-26 09:46
x6988312
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2012-3-26
收藏
得分:0 
回复 2楼 lz1091914999
额,这确实是一个错误.但我加上了()还是没用,依然不能输出
2012-11-26 10:13
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
收藏
得分:5 
可以了 但是内存上面有问题  楼主指针方面 要不你再学习一下 再写吧


程序代码:
# include<iostream.h>
# include<stdio.h>
class node
{
private:
    int exp;
    float coef;
    node *next;
public:
    node(int ep,float cf);
    node();
    void output(node *q);
    void del();
};
node *head=NULL;
node::node(int ep,float cf)
{
    exp=ep,coef=cf;
}
node::node()
{
    node *p=this;
    p->next=this;
    this->next=NULL;
    ::head=this;
    p=::head;
}
void node::output(node *q)
{
    //node *q;  这里的q什么也没有 怎么输出啊 亲?
    while(1)
    {
        cout<<q->coef<<"^"<<exp<<endl;
        q=q->next;
        if(q->next==NULL)
            break;
    }
}
void node::del()
{
//     node *p,*q;
//     q=::head;
//     while(q->next!=NULL)
//     {
//         p=q->next;
//         delete q;
//         q=p;
//     }
    this->next=NULL;
    delete this;
}
void main()
{
    int ep,i=1;
    float cf;
    node *q;
    node a[10];
    cout<<"please input exp and coef"<<endl;
    cin>>ep>>cf;
    a[0]=node(ep,cf);
    q=::head=&a[0];
    while(1)
    {
        cout<<"please input exp and coef,if finish press 0"<<endl;
        cin>>ep>>cf;
        if(ep==0||cf==0)
            break;
        a[i]=node(ep,cf);
        i++;
    }
    ::head=q;
    a[0].output(a);
    a[0].del();
}

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-11-26 10:17
x6988312
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2012-3-26
收藏
得分:0 
回复 4楼 mmmmmmmmmmmm
谢谢你帮我修改,真的很感谢
内存上的这个好像是不能访问私有成员的问题
而*next又要求要是私有成员
郁闷
2012-11-26 12:54
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
收藏
得分:0 
楼主 中午重新根据你的要求修改了一下  请版主指导 谢谢
程序代码:
#include<iostream>
using namespace std;
//定义节点类
class Node
{
private:
    int exp;//指数
    float coef;//系数
    Node *next;
public:
    Node(int ep,float cf);//cf为系数,ep为指数
    Node();//从键盘接收输入的系数,指数
    ~Node();
    void output();//题目未要求 不过可以用来测试

};
Node *head=NULL;
Node::Node(int ep,float cf)
{
    exp=ep;
    coef=cf;
    next=NULL;
}
//题目要求的是在构造函数里面进行初始化
Node::Node()
{
    int exp_;
    float coef_;
    cout<<"please input exp : ";
    cin>>exp_;
    cout<<"please input coef : ";
    cin>>coef_;
    if (head == NULL)
    {
        head=new Node(exp_,coef_);
    }
    else
    {
        while (head->next != NULL)
        {
            head=head->next;
        }
        head->next=new Node(exp_,coef_);
    }
    

}
//释放链表
Node::~Node()
{
    if(this->next != NULL)
        this->next=NULL;
}
void Node::output()
{
    Node *temp=head;
    while (temp != NULL)
    {
        cout<<temp->coef<<"^"<<temp->exp<<endl;
        temp=temp->next;
    }

}

int main()
{
    Node n1; 
    n1.output();

    return 0;
}

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-11-26 14:07
x6988312
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2012-3-26
收藏
得分:0 
回复 6楼 mmmmmmmmmmmm
这次行了,我是新手,刚刚学C++,多谢您的指导.
我得好好看看您的思路
2012-11-26 22:22
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
回复 6楼 mmmmmmmmmmmm
程序代码:
//bccn.cpp
#include<iostream>
using namespace std;
struct Node
{//定义结点
    int exp;
    float coef;
    struct Node *next;

    Node():exp(0), coef(1.0), next(NULL){}
    Node(int exp, float coef, struct Node *next = NULL):
    exp(exp), coef(coef), next(next){}
};
class Link
{//定义链表类
public:
    Link();
    ~Link();
    void init();
    void output();
private:
    struct Node *m_Head;
};
Link::Link()
{
    m_Head = new Node();
}
void Link::init()
{
    int exp_;
    float coef_;

    cout<<"please input exp : ";
    while (cin >> exp_)
    {
        cout<<"please input coef : ";
        cin>>coef_;
        m_Head->next = new Node(exp_, coef_, m_Head->next);
        cout<<"please input exp : ";
    }
}
Link::~Link()
{
    Node *p = m_Head->next;
    while (p)
    {
        m_Head->next = p->next;
        free(p);
        p = m_Head->next;
    }
    free(m_Head);
    m_Head = NULL;
}
void Link::output()
{
    Node *p = m_Head->next;
    while (p)
    {
        cout << ' ' << p->coef << "^" << p->exp <<endl;
        p = p->next;
    }
}

int main()
{
    Link link;
    link.init();
    link.output();

    return 0;
}


[ 本帖最后由 寒风中的细雨 于 2012-11-27 09:07 编辑 ]
2012-11-27 01:13
心流千雪
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:7
注 册:2012-11-30
收藏
得分:0 
.定义一个多项式节点类CNode:
class CNode
{
private:
           int exp;//指数
           float coef;//系数
           CNode *next;
    CNode *prev;
public:
    CNode(float cf,int ep);//cf为系数,ep为指数
    ~CNode();//实现节点脱离链表功能
   
};
CNode *head=NULL;
//完成以下定义
CNode::CNode(float cf,int ep)
{
}
定义一个全局指针CNode *head(指向多项式双向链表中的第一项节点),
要求:
1、CNode的构造函数自动将构造的对象插入head链表中(按指数从大到小排列),在输入指数相同的项时需要进行合并;
2、main函数结束时依次释放(delete q)链表中的的节点。
//验证定义
2012-11-30 10:11
心流千雪
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:7
注 册:2012-11-30
收藏
得分:0 
error C2248: 'next' : cannot access private member declared in class 'Node'
2012-11-30 10:53
快速回复:大家帮我看一下,是什么问题
数据加载中...
 
   



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

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