The inventor of the null reference was Tony Hoare. I would not argue with him if he says it was a mistake. I think he explains well enough here:
To my simple mind the case is clear. The null reference has much in common with the error return values you found in languages like C.
In both cases the issue is that the thing you are holding has two types. On the one hand it is primarily a thing that you want and are thinking about, a reference to another node or a returned value. On the other hand it is sometimes an error or special marker.
One has to continually write code to check those special cases. The compiler has no idea what is going on, it cannot help you, so it's up to you to get it right every time.
It's like holding a puppy in your hand that suddenly turns into a hand grenade!
Rust introduces the Option to do what you want with null. But as it is an actual type the compiler can help you handle it correctly.
Much can be said of the linked list. It's a great example in C programming books. As your code snippet above shows. Turns out that that is pretty much all it is good for