Eip_Nit_AC 2019-05-23 06:38 采纳率: 25%
浏览 3987
已结题

为什么p St b报错“表达式必须包含指向类的指针类型”?

#include<iostream>
#include<stdlib.h>
#define MaxSize 50

typedef int ElemType;
typedef struct Node *Position;
typedef Position BTNode;
struct Node
{
    ElemType data;
    struct node *lchild;
    struct node *rchild;
}b;

void CreateBTree(BTNode * &b, char*str)
{
    BTNode *St[MaxSize], *p;
    int top = -1, k, j = 0;
    char ch;
    b = NULL;
    ch = str[j];
    while (ch != '\0')
    {
        switch (ch)
        {
        case '(':top++; St[top] = p; k = 1; break;
        case')':top--; break;
        case',':k = 2; break;
        default:p = (BTNode *)malloc(sizeof(BTNode));
            p->data = ch;
            p->lchild = p->rchild = NULL;
            if (b == NULL)
                b = p;
            else
            {
                switch (k)
                {
                case 1:St[top]->lchild = p; break;
                case 2:St[top]->rchild = p; break;
                }
            }
        }
        j++;
        ch = str[j];
    }
}

图片说明
图片说明
其中p St b报错“表达式必须包含指向类的指针类型”
请问大佬们这是为什么呀?

展开全部

  • 写回答

1条回答 默认 最新

  • 我叫侯万楼 2019-05-24 10:12
    关注

    typedef int ElemType;
    typedef struct Node *Position;
    typedef Position BTNode;
    struct Node
    {
    ElemType data;
    struct node *lchild;
    struct node *rchild;
    }b;
    粗略看了一下上面的应该等价于下面的
    typedef int ElemType;
    typedef struct Node
    {
    ElemType data;
    struct node *lchild;
    struct node *rchild;
    }*Position, *BTNode, Node;
    Node b;
    这个
    所以BTNode * p; 相当于Node **p,所以你就知道了(Node *)不是一个类,而是一个指针类型,你非要这么写的话可以试试(*p)->
    或者 BTNode p,建议“}*Position, *BTNode, Node;”改为“}*Position, BTNode, Node;”
    另外建议指针数组啥的该加的括号加上

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月10日

悬赏问题

  • ¥100 二维码被拦截如何处理
  • ¥15 怎么解决LogIn.vue中多出来的div
  • ¥15 优博讯dt50巴枪怎么提取镜像
  • ¥30 在CodBlock上用c++语言运行
  • ¥15 求C6748 IIC EEPROM程序固化烧写算法
  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部