Я думаю, что прежде чем пытаться понять связанный список, вы должны поработать над пониманием указателей и динамического распределения, так как связанные списки используют эти два понятия.
Связанный список - это список областей памяти, которые вы должны выделить (и динамически), я не знаю, что здесь делает ваша программа, но он не должен быть стабильным в системе с какой-либо защитой памяти.
"aux" - указатель, который указывает ... где-то. Мы не знаем где, но, вероятно, не там, где нужно.
В C нет волшебства, как в языках более высокого уровня (python и т. Д.). Вы должны создать свой связанный список самостоятельно