嗨,我刚开始尝试在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");
有趣的是,您必须注意以下几点:
如果你要将引用传递到你的链接列表,请访问:
- 您需要首先为堆中的每个节点分配结构。为了避免堆砸
- 您甚至可能不得不再次对字符串进行malloc,以避免堆栈崩溃
- 然后,您必须将每个节点彼此链接
如果您只是为了好玩,并且不打算将对结构的引用传递给不同的函数。那么你就不需要使用malloc了。直接初始化它们。