一个关于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;
答案 0 :(得分:2)
你只需这样做:
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
如果您想获得的数字不是列表中的第一个数字,则必须为链接列表创建搜索功能。
答案 1 :(得分:1)
你能做这样的事吗?
typedef struct ListNode
{
char *number;
struct ListNode *next;
} ListNode;
typedef struct TreeNode
{
char *name;
ListNode *numbers;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;