一个真正参考Structs的小查询。
如果有
Struct Node {
char *number;
struct Node *next;
}List;
和树形结构:
struct Node {
char *name;
char *number;
struct Node *right;
struct Node *left;
};
,我想设计它,这样每个节点在我的树,可以每个包含一个列表的电话号码,有一种方法,我可以做到这一点,如果是这样的话,我如何准确地引用我的结构体列表在我的树?
编辑:有什么想法,为什么这是分段断层?使用下面推荐的Structs
TreeNode* AddNode(TreeNode *root, ListNode *list, char *name, char *phonenum) {
int comparison;
if ( root == NULL ) {
root = (TreeNode *)malloc(sizeof(TreeNode));
list = (ListNode *)malloc(sizeof(ListNode));
root->name = strdup(name); root->list->number = strdup(phonenum);
root->left = root->right = NULL;
您只需这样做:
typedef struct Node {
char* name;
List* list;
struct Node *right;
struct Node *left;
} Node;
然后,为了获得每个节点中列表第一个元素的本地副本,您将执行如下操作:
Node* treenode; //this is pointing to some node in the tree
char* num_buffer = strdup(treenode->list->number);
//use num_buffer and then call free() on it when you're finished
如果您想要得到一个不是列表中第一个数字的数字,您必须为您的链表创建一个搜索函数
你能这样做吗?
typedef struct ListNode
{
char *number;
struct ListNode *next;
} ListNode;
typedef struct TreeNode
{
char *name;
ListNode *numbers;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;