C语言 树中的列表



一个真正参考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;

相关内容

  • 没有找到相关文章

最新更新