c - 创建具有未知链接数的结构节点
问题描述
我研究过链表、二叉树,我们已经知道一个节点可以拥有的链接数量。例如,一个双向链表有 2 作为二叉树。但是当涉及到 Graphs 时,一个节点可以被 n 个其他节点所喜欢,所以我的问题是如何为具有未知数量链接的节点声明一个结构。
二叉树结构
struct node{
node* left;
node* right;
int data;
}
单链表
struct node{
node* link;
int data;
}
在此图中,节点“2”有两个链接,而节点“4”有三个。
我是 C 的新手,所以请容忍我对这些主题缺乏了解,在此先感谢。
解决方案
如何为具有未知数量链接的节点声明结构。
创建指向动态分配的指向节点的指针数组的指针。
struct node {
/// array of pointers to nodes we link to
node **link;
/// count of links
size_t link_cnt;
int data;
};
然后link
指向一个动态分配的指向节点的指针数组——它是一个“链接”数组。可link_cnt
用于跟踪链接数组中的链接计数。
// example of linking two nodes in one direction.
void node_link_to_node(struct node *this, struct node *other) {
void *p = realloc(this->link, sizeof(*this->link) * (this->link_cnt + 1));
if (p == NULL) abort();
this->link = p;
this->link[this->link_cnt] = other;
this->link_cnt++;
}
我用 C 语言编写了这段代码。
推荐阅读
- c# - C#语音识别不会回答我
- c++ - 在 C++ 中将浮点数转换为本地化字符串
- python - 使用 url 循环列表时出现 TimeoutException
- python - 线性回归 (OLS):使用 Statsmodel summary_Frame() 未准确计算置信区间
- mysql - 尝试多次查询时“无法获取连接”
- spring-boot - 如何在 Spring Boot 应用程序中安装 Spring Web Flow 和 Java servlet faces 2?
- python-3.6 - ros2 rclpy.spin_once() 在线程中产生“生成已经执行”异常
- openlayers - OpenLayers - 如何将自定义切片图层投影到 [-200,-200,200, 200] 的视图?
- splunk - Splunk Rex:将字符串的字段提取为值
- ios - Ionic 4 IOS Socket.io 如何动态获取配置