Я точно не знаю, какое поведение вы хотите, но причина вполне ясна.
Ваш цикл находится в состоянии while
, которое будет выполняться до тех пор, пока t
не станет null
. Поэтому, пока t
не равен NULL, цикл продолжится.
Вы когда-либо присваиваете t
только ненулевым значениям - фактически вы определенно проверяете наличие нулевого регистра и останавливаете его, создавая новый узел.
Таким образом, либо вам нужно пересмотреть условие цикла, либо убедиться, что t
действительно становится нулевым в некоторых случаях, в зависимости от того, каковы ваши фактические требования к алгоритму.
А так как вы возвращаете t
внизу, я полагаю, что условие while неверно; единственный возможный способ прекратить это, если t
равен нулю в этой точке, так что возвращать это было бы бессмысленно в любом случае.