我应该使用哪种类型的功能?

时间:2019-01-24 12:55:08

标签: c function types linked-list

我已经将wchar_t字符串作为数据单独链接了列表。如果要添加一个新节点并用文本填充它,应该使用哪种类型的功能?

我尝试使用链接列表类型,但是我不确定这是否是一种好方法。可能是这样吗?

typedef struct smth{
    wchar_t data;
    struct smth *next;
}smth;

smth* add_to_end(wchar_t *text, smth *head){
.
.
.
}

我决定不输入完整的代码,只是尽可能少地显示我在这里所做的事情,并询问其外观如何?

1 个答案:

答案 0 :(得分:1)

使用以下行:wchar_t data;,您只能存储一个宽字符。

关于您显示的功能smth* add_to_end(wchar_t *text, smth *head): 此函数不需要传递指向wchar_t的指针,因为在节点定义中,您只打算保留一个宽字符。

如果您不想使head指针成为全局指针,那么我认为您每次与head一起调用add_to_end时都需要传递新的data 。然后,此函数返回链接列表的更新后的head,您可以稍后在代码中的某个位置收集该列表。返回的smth*将是新的头像。

在函数add_to_end中,您可能需要执行以下操作:

// Assuming prototype as smth* add_to_end(wchar_t text, smth *head)
struct tmp* = malloc(sizeof(struct));
if(tmp == NULL)
{
    printf("\nMemory allocation failed");
    return NULL;
}
tmp->data = text;
tmp->next = head;
head = tmp;
return tmp;