C++ 我需要帮助思考实现C++;C语言中的链表样式

C++ 我需要帮助思考实现C++;C语言中的链表样式,c++,c,list,pointers,linked-list,C++,C,List,Pointers,Linked List,这是我C班的作业;我已经有C++的经验了。我面临的问题是,我的实现看起来像地狱一样阴暗。我当前的实现一次只允许使用一个LinkedList。我知道我总是可以传递一个指向结构的指针,但我想避免这种情况。因此,它变得非常阴暗。我也没有办法规范职能范围;它们在全球可见。还要注意,指向h文件中结构的指针;这就是为什么我不能有多个一对一的程序。除了将指针传递给每个函数,还有人能想出其他方法吗 它目前只是单链接,但双链接不会超过30分钟 是的,在C中,您将向在其上操作的每个函数传递指向结构的指针 type

这是我C班的作业;我已经有C++的经验了。我面临的问题是,我的实现看起来像地狱一样阴暗。我当前的实现一次只允许使用一个LinkedList。我知道我总是可以传递一个指向结构的指针,但我想避免这种情况。因此,它变得非常阴暗。我也没有办法规范职能范围;它们在全球可见。还要注意,指向h文件中结构的指针;这就是为什么我不能有多个一对一的程序。除了将指针传递给每个函数,还有人能想出其他方法吗

它目前只是单链接,但双链接不会超过30分钟


是的,在C中,您将向在其上操作的每个函数传递指向结构的指针

typedef struct list list_t;

list_t *list_new();
void list_delete(list_t *list);
void list_insert_back(list_t *list, void *obj);
void list_insert_front(list_t *list, void *obj);
/* etc. */
我不知道你所说的“调整范围”是什么意思。如果您谈论的是函数名,那么您通常会在函数名前面加上一个常见的前缀,如上面的
list\

幕后,这最终工作与C++代码相同。C++编译器预先定义成员函数(如示例使用的代码> Listy,尽管C++编译器不同),C++编译器也隐式传递<代码>这个< /C>参数。 <>实际上,最古老的C++编译器(cFAX)将把C++代码直接转换成C代码。


注意到,与典型的C++方法不同,你不必在头文件中定义链表结构——这允许你在不破坏ABI兼容性的情况下改变数据结构。

< P>是的,在C中,你将把一个指针传递给一个结构,并对每个函数进行操作。
typedef struct list list_t;

list_t *list_new();
void list_delete(list_t *list);
void list_insert_back(list_t *list, void *obj);
void list_insert_front(list_t *list, void *obj);
/* etc. */
我不知道你所说的“调整范围”是什么意思。如果您谈论的是函数名,那么您通常会在函数名前面加上一个常见的前缀,如上面的
list\

幕后,这最终工作与C++代码相同。C++编译器预先定义成员函数(如示例使用的代码> Listy,尽管C++编译器不同),C++编译器也隐式传递<代码>这个< /C>参数。 <>实际上,最古老的C++编译器(cFAX)将把C++代码直接转换成C代码。


注意到,与典型的C++方法不同,你不必在头文件中定义链表结构——这样可以在不中断ABI兼容性的情况下更改数据结构。

,因为你的其余问题已经得到回答,我想补充一点,您可以限制函数的范围:只需声明它们

static
,这将为它们提供内部链接:

/* This function won't be seen outside of the header file */
static void foo(list *l); 
这基本上相当于在类中声明私有函数
foo

class list
{
private:
    void foo();    
};

既然您的问题的其余部分已经得到了回答,我想补充一点,您可以限制函数的范围:只需声明它们
static
,这将为它们提供内部链接:

/* This function won't be seen outside of the header file */
static void foo(list *l); 
这基本上相当于在类中声明私有函数
foo

class list
{
private:
    void foo();    
};

您只需将指向链表的指针作为参数传递。这就是C++中这个指针的最终含义(它是隐式传递的)。什么是C++样式链表而不是C语言?你说我知道我可以一直传递一个指向结构的指针,但是我想避免它。你为什么要避免这种情况?您希望避免哪些问题?在.h文件中,我看到了链表的结构,但没有看到应表示链表项的结构。。。好像你错过了一个大难题。@ Qdii,我假设它不会使用像STL之类的C++专有的东西。你只需把指针传递给链表作为参数。这就是C++中这个指针的最终含义(它是隐式传递的)。什么是C++样式链表而不是C语言?你说我知道我可以一直传递一个指向结构的指针,但是我想避免它。你为什么要避免这种情况?您希望避免哪些问题?在.h文件中,我看到了链表的结构,但没有看到应表示链表项的结构。。。好像你错过了一个大难题。@ QDII,我假设它不会使用C++专有的东西,比如STL。