#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;
}