我已经将wchar_t字符串作为数据单独链接了列表。如果要添加一个新节点并用文本填充它,应该使用哪种类型的功能?
我尝试使用链接列表类型,但是我不确定这是否是一种好方法。可能是这样吗?
typedef struct smth{
wchar_t data;
struct smth *next;
}smth;
smth* add_to_end(wchar_t *text, smth *head){
.
.
.
}
我决定不输入完整的代码,只是尽可能少地显示我在这里所做的事情,并询问其外观如何?
答案 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;