c - 将链表包装在另一个仅包含列表头部的结构中是否被认为是不好的做法或反模式?

标签 c standards wrapper anti-patterns

例如,使用 C,假设我这样定义一个节点:

typedef struct nde {
    int val;
    struct nde* next;
}node;

然后我用这样的东西“包装”它:

typedef struct lst {
    node* head;
}list;

我确实是指这个案例。我知道如果你想包含其他信息,使用包装器可能会有用,但如果它只包含指向头部的指针,它是否被认为是“不好的做法”?对我来说这是一种更直观的方法,主要是因为在推送或弹出或使用其他一些功能时,您将始终取消引用,并且命名约定也更有意义。

最佳答案

不,这不是反模式,实际上并不少见。这允许您有一个引用列表的句柄,当您删除元素时它不会改变。如果您不这样做,那么删除列表的第一个元素是一种特殊情况,因为您需要更新调用者的指针以指向新的头部。如果有多个引用列表,几乎不可能安排所有的更新。

如果您知道列表只会有一个引用,那么就没有必要这样做。

关于c - 将链表包装在另一个仅包含列表头部的结构中是否被认为是不好的做法或反模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821304/

相关文章:

c - 人们觉得 C 指针有什么困难?

c - 灵活的数组成员访问 union 原始字节

Python:将所有函数包装在一个库中

c# - 创建 Wrapper 类时,我应该在 .NET 中使用 API 的内部类吗?

c - 来自 x86_64 Linux 中内联 asm 的系统调用?

c++ - linux kernel.h 文件中定义的宏

c - 此值 <stdlib.h> 中的 qsort(浮点二维数组)错误

c - 在 C 中使用后增量时返回变量

C++标准写法: Does "through all iterators in the range" imply sequentiality?

java - 从 MATLAB 调用 Java