数据结构-定义了一个结点struct,想要把它的各属性输出,但是程序跑不出来

定义了一个结点struct,想要把它的各属性输出,但是程序跑不出来 下面是定义的结点和查看函数Show()
#include<iostream>
#include<malloc.h> 
using namespace std;
typedef struct Node //哈夫曼树和链表的通用结点  //初始化的时候必须有 data weight No 
{
    char data;//存放该节点对应的字符 
    int No;//存放该节点对应的生成顺序(即输出的结点顺序) 
    int weight;//存放该节点对应的权值 
    struct Node* next=NULL;//当在链表中时指向下一个结点  当在树中时 指向双亲节点(代替parent) 
    struct Node* lchild=NULL;
    struct Node* rchild=NULL;//指向左右孩子结点 
}; 

bool Show(Node* x)//用来查看结点的函数
{
    if(x->next != NULL)
    {
        printf("parent||next:%d\n",x->next->No);
    }
    if(x->lchild != NULL)
    {
        printf("lchild:%d\n",x->lchild->No);
    }
    if(x->rchild != NULL)
    {
        printf("rchild:%d\n",x->rchild->No);
    }
    printf("data:%c,No:%d,weight:%d\n",x->data,x->No,x->weight);
    return 1;
 } 

int main()
{
    Node *p;
    p->data ='a' ;//存放该节点对应的字符 
    p->No = 1;//存放该节点对应的生成顺序(即输出的结点顺序) 
    p->weight =2;//存放该节点对应的权值 
    p->next=NULL;//当在链表中时指向下一个结点  当在树中时 指向双亲节点(代替parent) 
    p->lchild=NULL;
    p->rchild=NULL;
    Show(p);
    return 1;
}


运行结果及报错内容

不会发图片,就是出现一个弹窗“出现了一个问题,导致停止正常工作”

我的解答思路和尝试过的方法

是不是形参和实参的传递出了错误,暂时不知道为什么程序异常,求指点

我想要达到的结果

希望程序正常运行

因为你的结构没有分配存放数据的内存,所以程序运行失败,修改了一下,如下:


#include<iostream>
#include<malloc.h> 
using namespace std;
typedef struct Node //哈夫曼树和链表的通用结点  //初始化的时候必须有 data weight No 
{
    char data;//存放该节点对应的字符 
    int No;//存放该节点对应的生成顺序(即输出的结点顺序) 
    int weight;//存放该节点对应的权值 
    struct Node* next=NULL;//当在链表中时指向下一个结点  当在树中时 指向双亲节点(代替parent) 
    struct Node* lchild=NULL;
    struct Node* rchild=NULL;//指向左右孩子结点 
}; 
 
bool Show(Node* x)//用来查看结点的函数
{
    if(x->next != NULL)
    {
        printf("parent||next:%d\n",x->next->No);
    }
    if(x->lchild != NULL)
    {
        printf("lchild:%d\n",x->lchild->No);
    }
    if(x->rchild != NULL)
    {
        printf("rchild:%d\n",x->rchild->No);
    }
    printf("data:%c,No:%d,weight:%d\n",x->data,x->No,x->weight);
    return 1;
 } 
 
int main()
{
    Node *p = (Node *) malloc(sizeof(Node));
    p->data ='a' ;//存放该节点对应的字符 
    p->No = 1;//存放该节点对应的生成顺序(即输出的结点顺序) 
    p->weight =2;//存放该节点对应的权值 
    p->next=NULL;//当在链表中时指向下一个结点  当在树中时 指向双亲节点(代替parent) 
    p->lchild=NULL;
    p->rchild=NULL;
    Show(p);
    return 1;
}