Я создал такую структуру:
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"
Спасибо @Barmar. Это сработало 💖
struct _symbol_ *add_symbol(int id, char *name) {
int check = find_symbol(name, symbol);
if (check == 1) {
printf("symbol already available >>> %s\n", name);
exit(1);
}
if (symbol == NULL)
return symbol = new_symbol(id, name, NULL);
else {
// Add this code
struct _symbol_ *current_node = symbol;
while(current_node -> next_symbol != NULL) {
current_node = current_node -> next_symbol;
}
return current_node -> next_symbol = new_symbol(id, name, NULL);
}
}
INPUT_DATA()
должен содержать цикл, который находит конец цепочки и помещает туда новый символ.