【发布时间】:2022-01-02 05:46:15
【问题描述】:
您好,我刚开始尝试在 C 中实现某种列表,只是为了尝试学得更好。我目前没有代码,只是需要一些假设的帮助
#define MAX_LIST_SIZE 1024
typedef struct clist clist;
struct clist{
clist *next;
char *data;
}
void add_to_list(char *str, clist *current){
//what code goes in here
im guessing some sort of malloc adding the strlen of str plus the sizeof the clist
}
int main(){
clist mylistofstrings;
}
如果你能回答这个问题,我的下一个问题是,有没有办法使用宏或其他东西来改变结构,这样你就可以添加如下字符串
clist mystrings = ADDSTRING("add this");
ADDTOLIST(mystrings,"second string");
【问题讨论】:
-
您需要分配一个节点 (
struct clist),但不需要复制字符串。你可以复制指针 -
你能给我一个代码示例吗,如果我想让 clist->data 指向一个字符串,我在哪里为字符串分配空间
-
我只是说不需要分配任何东西,你需要做的就是复制指针(
clist->data = str;) -
对不起,我对 C 很陌生,所以我意识到这对你来说可能是非常基础的。我可以继续添加链接的列表并尽可能多地添加新字符串。 clist->data = str , clist->next->data = str , clist-next->next->data = string
-
不,您需要分配这些节点。再说一遍,已经说过了。这不是 C 特定的。每种语言都是一样的。
标签: c linked-list malloc