找回密码
 注册

QQ登录

只需一步,快速开始

查看: 606|回复: 20

问个C++的指针问题

[复制链接]
发表于 2010-8-26 12:44:59 | 显示全部楼层 |阅读模式
本帖最后由 fatfat325 于 2010-8-26 20:56 编辑

怎么判断一个指针是否已被initialise?

我在Dev C++下用(p==NULL)的时候编译没错,不过运行的时候会Segmentation Fault。。。

最近网络down了 偷的网 只能晚上再来一次了

原问题在下面。。。只能把注释的地方修改,main()不能动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2010-8-26 12:46:03 | 显示全部楼层
#include <iostream>
using namespace std;
class Node {
    public:
        Node(int);
        void attL(Node *);
        void attR(Node *);
        int getH();
    private:
        int key;
        Node *left, *right;
};
Node::Node(int k) {
    key=k;
    left=NULL;
    right=NULL;
}
void Node::attL(Node *tree) {
    if (left==0)
        left=tree;
    else
        throw 'L';
}
void Node::attR(Node *tree) {
    if (right==0)
        right=tree;
    else
        throw 'R';
}
int Node::getH() {
    int l,r;
    if (left==0) 这里怎么改?
        l=0;
    else
        l=(*left).getH();
    if (right==0)
        r=0;
    else
        r=(*left).getH();
    if (l>r)
        return l+1;
    else
        return r+1;
}
int main() {
    Node n[9] = {0,1,2,3,4,5,6,7,8}; // construct nodes
    for (int i = 1; i < 8; ++i) {
        int root, subtree;
        char LR;
        cin >> root >> LR >> subtree; // get indices of the node and the root node
        // of subtree, and whether it will become the
        // left or right subtree.
        try {
            if (LR == 'L') n[root].attL(&n[subtree]);
            else n[root].attR(&n[subtree]);
            cout << n[root].getH();
        }
        catch (char c) { cout << c;} // tree attachment violation
    }
    return 0;
}
回复 支持 反对

使用道具 举报

发表于 2010-8-26 13:02:15 | 显示全部楼层
CSDN。。。IT行業已經對我永久關閉了三年。。。
回复 支持 反对

使用道具 举报

发表于 2010-8-26 13:42:21 | 显示全部楼层
CSDN吧。。抱歉我只会JAVA 不学有指针的东东。。
回复 支持 反对

使用道具 举报

发表于 2010-8-26 13:51:32 | 显示全部楼层
NULL和0是等价的吧。
代码应该没有问题,要么就是数据下标越界了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-26 17:41:37 | 显示全部楼层
pk帝 围观帝呢。。。求助啊。。。
回复 支持 反对

使用道具 举报

发表于 2010-8-26 18:49:55 | 显示全部楼层
试试 if (!left)
回复 支持 反对

使用道具 举报

发表于 2010-8-26 19:24:43 | 显示全部楼层
卧槽...........我试试看穿越三年回去问问我自己
回复 支持 反对

使用道具 举报

发表于 2010-8-26 19:45:45 | 显示全部楼层
木有学过C++只学过C的路过。。。
回复 支持 反对

使用道具 举报

发表于 2010-8-26 19:47:35 | 显示全部楼层
路过围观……
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|FMFans ( 京ICP备07501235号 )

GMT+8, 2025-2-14 00:52 , Processed in 0.028244 second(s), 12 queries , Gzip On, APCu On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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