gpt4 book ai didi

具有动态节点大小的 C 链表

转载 作者:行者123 更新时间:2023-11-30 14:41:35 25 4
gpt4 key购买 nike

我尝试在 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;
}

关于具有动态节点大小的 C 链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54872583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com