C语言 向包含自定义数据类型的简单链表添加元素



我开始滥用这个网站,但是很难找到我这种问题的例子(一切都是类相关的,我不能在这个项目中使用它)。

我必须模拟一个动态向量,所以我认为我简单的链接列表将是一个很好的方法。

typedef struct OList{
    Offer element;
    struct OList *next;
}OList;

typedef struct{
    int id;
    char destination[32];
    char type[32];
    int price;
}Offer;

我正在尝试在列表的开头添加元素

OList insertElement(OList *start, Offer of)
{
    OList *temp = (OList*)malloc(sizeof(OList));
    temp->element = of;
    temp->next = start;
    start = temp;
    return *start; 
}

我调用它的地方:

OList *start = (OList*)malloc(sizeof(OList));
start->next = NULL;
start = insertElement(start, of);

我认为我应该返回第一个元素,因为我添加的每个元素都改变了它,但我得到以下错误:

不兼容的类型,当赋值给类型'struct OList *'时' list ' start = insertElement(start, of);

我得出这个结论是因为如果我不返回它,并且我尝试遍历列表,我只能访问我第一次声明的元素。

我快要放弃了,但同时我又很想理解这个

好,insertElement返回OList, start类型为OList *

你可能想要这个:

OList *insertElement(OList *start, Offer of)
{
    OList *temp = (OList*)malloc(sizeof(OList));
    temp->element = of;
    temp->next = start;
    return temp;
}

此外,OList是一个结构体,而结构体可能很重,而OList *占用的内存量与int相同。所以不要用栈传指针代替结构体!

相关内容

  • 没有找到相关文章

最新更新