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

为什么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 18: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日

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码