0
我有两个结构如下所述。在设置了huffmanTree = tempNode
之后,huffmanTree
的左右内部指针为NULL。但是,在此之前,该值仍然有效,但在设置两个结构相等后,该值就消失了。我究竟做错了什么?设置两个相等的结构后指针为NULL
我只是想创建一个huffmanTree struct
并用一些数据初始化它。然后创建一个tempNode
,其中HuffmanTree *left
指向huffmanTree
和HuffmanTree *right
指向新数据。当我从huffmanTree
数据打印出来,它是NULL
// Leaf node
typedef struct HuffmanLeaf {
private:
char data;
int count;
public:
HuffmanLeaf() {
}
void setData(char data) {
this->data = data;
}
void setCount(int count) {
this->count = count;
}
char getData() {
return this->data;
}
int getCount() {
return this->count;
}
}HuffmanLeaf;
// Huffman tree
typedef struct HuffmanTree {
HuffmanTree *right;
HuffmanTree *left;
HuffmanLeaf huffmanLeaf;
} HuffmanTree;
int main() {
/* huffmanLeaf[] was defined and initialized
.
.
.
.
*/
// Take the first two smallest and so on
HuffmanTree huffmanTree;
HuffmanTree tempNode;
// Allocate memory for internal struct
huffmanTree.left = new (HuffmanTree);
huffmanTree.right = new (HuffmanTree);
tempNode.left = new (HuffmanTree);
tempNode.right = new (HuffmanTree);
// Two character with least frequency. Create a new Tree
huffmanTree.right->huffmanLeaf = huffmanLeaf[0];
huffmanTree.left->huffmanLeaf = huffmanLeaf[1];
// Next character
tempNode.left = &huffmanTree; // have node left point to huffmanTree
tempNode.right->huffmanLeaf = huffmanLeaf[2]; // new data on node right
/* Data is still here for tempNode */
cout << tempNode.left->left->huffmanLeaf.getData() << endl;
/* Error occured after this */
huffmanTree = tempNode;
// Value is NULL
cout << huffmanTree.left->left->huffmanLeaf.getData() << endl; // Value is NULL
}
可以显示HummanTree :: left的类型,HuffmanTree的析构函数和任何复制构造函数/赋值运算符的内容?顺便说一句,快速修复将是制作huffmanTree和tempNode指针。 – dseifert
它工作。你能告诉我为什么吗? – tuyenle