Я работаю над навязанным самим вызовом, который включает в себя реализацию связанного списка и функции добавления для него, что вызывает у меня проблемы, кажущиеся связанные с областью действия переменной.
Функция добавления проходит по каждому элементу ссылки пока он не прочитает значение NULL
, а затем изменит значение данных, связанное с этой ссылкой, на вход функции. Тестовые выходы в функции, кажется, показывают, что она работает как задумано, но при выполнении того же теста вне функции, даже после того, как она вызвана, выдает другой выход.
template <class T>
struct atom{
T data;
atom<T>* link = NULL;
};
template <class T>
void append_LL(atom<T> first, T input_data){
atom<T>* current_node = &first;
atom<T>* next_node = current_node->link;
int i = 0;
while (i < 4 && next_node != NULL) {
current_node = next_node;
next_node = next_node->link;
i ++;
}
current_node->data = input_data;
current_node->link = (atom<T>*)malloc(sizeof(atom<T>));
cout << "leaving node as: " << current_node->data << endl; //outputs 5
cout << "input nodes data: " << first.data << endl; //outputs 5
}
int main() {
int dd = 5;
atom<int> linked_list;
linked_list.data = 999;
append_LL(linked_list, dd);
cout << linked_list.data << endl; //outputs 999
}