我有单链表,我想在这个结构中添加一个新元素。
在程序代码中,我将创建结构和指向 NULL 的头指针。这就是我在oo代码中解决这个问题的方法:
typedef struct a {
int element;
struct a *next;
} a;
typedef struct b {
int element;
struct b *next;
} b;
class Foo {
a *a; // head for a structure = NULL at the beginning
b *b; // head for b structure = NULL at the beginning
接下来我要做的是检查列表是否为空,如果是,则将 head 设置为指向新创建的第一个元素。
执行此操作的函数应该是模板,因为我想将我拥有的任何结构传递给它。所以:
template <class T> void Addition_Struct::add(T head)
{
if(head == NULL)
{
head = (T*)malloc(sizeof(T));
head->next = NULL;
}
}
此时出现了几个问题。我猜想 T 应该是结构的类型,并且指向头指针(当前为 NULL)。编译器在 malloc 行 - 中引发错误cannot convert "a**" to "a*"
。怎么了?
编辑:
示例函数调用将是:
add(this->a);