为了学习链表(双重链接)的概念,我正在编写一堆简单的通用函数来处理它们。大多数功能都使用指向DL_List的指针
结构,它是句柄,不仅包含指向第一个和最后一个元素的链接,而且还包含列表中的当前位置。
typedef struct DL_Node {
struct DL_Node *next = NULL;
struct DL_Node *prev = NULL;
int data;
} DL_Node;
typedef struct DL_List {
struct DL_Node *first = NULL;
struct DL_Node *last = NULL;
struct DL_Node *cur = NULL;
} DL_List;
因此,我总是必须将指针传递给该句柄。
int main() {...
DL_List list; // lives on the stack
init_list(&list, 9);
push(&list, 7);
append(&list, 10);
insert_after(&list, -31);
print_list(&list);
...}
所以这是一个问题:有什么方法可以避免重读通过
&list
的内容?也许是typedef?github repo
最佳答案
你可以做
int main() {...
DL_List list; // lives on the stack
DL_List * plist = &list;
init_list(plist, 9);
push(plist, 7);
append(plist, 10);
insert_after(plist, -31);
print_list(plist);
...}
如果您想避免输入
&
,但这并不能真正为您节省一些时间。一个好的编译器应该对此进行优化。
关于c - 隐藏类型的性质,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21398241/