将项附加到C中的不透明链表处理程序
我正在学习C语言中的链表,我发现了一些(如果我理解得很好的话)在不知道内部结构(字段)的情况下操作链表的问题 给定指向链接列表的指针,是否可以在不知道其内部结构的情况下追加/删除链接列表中的项目 编辑(添加详细信息) 因此,问题是创建一组函数来操作链表,给定链表上的处理程序作为参数,该参数以以下方式声明:将项附加到C中的不透明链表处理程序,c,linked-list,C,Linked List,我正在学习C语言中的链表,我发现了一些(如果我理解得很好的话)在不知道内部结构(字段)的情况下操作链表的问题 给定指向链接列表的指针,是否可以在不知道其内部结构的情况下追加/删除链接列表中的项目 编辑(添加详细信息) 因此,问题是创建一组函数来操作链表,给定链表上的处理程序作为参数,该参数以以下方式声明: typedef struct list *handler; 例如,我创建了一个函数来创建一个链表: handler ListCreate() { handler list = (ha
typedef struct list *handler;
例如,我创建了一个函数来创建一个链表:
handler ListCreate()
{
handler list = (handler)malloc(sizeof(handler));
if(!list)
{
printf("can not allocate memory \n");
return NULL;
}
return list;
}
但当谈到附加时,我只是被阻止了,我认为这是不可能的,但也许我错了
这就是函数的原型:
int ListAppend(handler list, void *item)
一般来说,任何以“是否有可能做…”开头的问题都可以用“是”来回答。话虽如此,是列表是不透明的结构,还是您想要添加到列表中的数据?两者都是不透明的,数据是无效的*。现在我们来问一个难题:您的问题是什么?对于这样一个列表,您是否有一组只想使用的函数?或者你应该创建一组函数和结构来处理这个问题?你试过什么?你的尝试有什么问题?你有没有一张你想给我们看的照片?也许是时候刷新、接受SO、read以及。对于实现链表功能的人来说,没有访问列表结构内部的权限是没有意义的。你怎么会陷入那样的境地?你确定你没有误解你的任务吗?或者是否有其他函数可以操作列表?这意味着您需要定义列表结构。不透明指针返回到调用代码。它对代码的用户来说是不透明的。对于代码的实现者来说,这不是不透明的。这是一个非常标准的模式。