【发布时间】:2021-03-23 03:53:34
【问题描述】:
我创建了一个这样的结构:
struct _symbol_ {
int symbol_id;
char *symbol_name;
struct _symbol_ *next_symbol;
};
struct _symbol_ *symbol;
接下来,我创建了一个将数据添加到结构中的函数:
struct _symbol_ *new_symbol(int id, char *name, struct _symbol_ *next) {
struct _symbol_ *s;
s = (struct _symbol_ *)malloc(sizeof(struct _symbol_));
if(s == NULL) {
printf("unable to malloc _symbol_ structure\n");
exit(1);
}
s -> symbol_id = id;
if(name == NULL)
s -> symbol_name = NULL;
else {
s -> symbol_name = malloc(strlen(name) + 1);
strcpy(s -> symbol_name, name);
}
s -> next_symbol = NULL;
return s;
}
我知道这行得通!所以这就是问题.. 数据可以输入如下
symbol = new_symbol(10, "a", NULL);
symbol -> next_symbol = new_symbol(10, "a", NULL);
symbol -> next_symbol -> next_symbol = new_symbol(10, "a", NULL);
所以我写了另一个函数来输入数据:
struct _symbol_ *add_symbol(int id, char *name) {
if(symbol == NULL)
return symbol = new_symbol(id, name, NULL);
else
return symbol -> next_symbol = new_symbol(id, name, NULL);
}
但这里只输入数据 symbol, symbol -> next_symbol 。那么如何编写一个函数来一一正确输入数据呢?
我的意思是:
function INPUT_DATA(string name, structure pointer) {
// Content
}
INPUT_DATA("1", symbol);
INPUT_DATA("2", symbol);
INPUT_DATA("3", symbol);
data 1 => symbol = "1"
data 2 => symbol -> next_symbol = "2"
data 3 => symbol -> next_symbol -> next_symbol = "3"
【问题讨论】:
-
INPUT_DATA()应该包含一个循环,找到链的末端并将新符号放在那里。 -
谢谢@Barmar。成功了???