c - 具有动态节点大小的 C 链表
问题描述
我试图在 C 中创建一个链表,其中每个节点都有用户在程序启动时输入的特定大小。我已经想到了一个结构:
struct ListNode{
char * str;
struct ListNode * next_node;
};
但是这里每个节点的大小是固定的。有任何想法吗?
提前非常感谢。
解决方案
看来您每次都需要更改节点持有的数据大小。您可以通过使用一个包含指向动态分配数据的指针的恒定大小节点来实现这一点。
请注意,在下面的示例中,结构大小保持为 sizeof(void*)+ sizeof(node*) 但分配给每个节点的数据大小会根据用户输入而改变。
typedef struct Dnode
{
void* data;
struct Dnode* next;
}Dnode;
Dnode* CreateDnode(size_t data_size_bytes)
{
Dnode* newNode = NULL;
newNode = malloc(sizeof(Dnode));/*always the same*/
if(NULL == newNode)
{
return NULL;
}
newNode->data = malloc(data_size_bytes);/*changes by input*/
if(NULL == newNode->data)
{
return NULL;
}
newNode->next = NULL;
return newNode;
}
推荐阅读
- firebase - 无法从本地机器中的本机应用程序进行 API 调用
- python - 排序后所选项目更改
- c - 包含 Boost C++ 标头会导致 dlopen() 返回错误:_ZTVN10__cxxabiv117__class_type_infoE
- c# - 日期范围内的 LINQ 完全外部联接
- scala - ?=> 在 Scala 中是什么意思?
- c - 使用线程构建一个简单的计算器
- bash - 如何在 Raspbian OS Buster 上启动时自动启动脚本?
- azure - 在 Microsoft Azure 中,有没有办法查看触发器以查看它调用了哪些函数?
- while-loop - Netlogo 计算所有接触的海龟类型
- reactjs - 上传完成后是否可以从 Antd 的上传动作中获取 API 响应?