insertAfter()를 짜는게 숙제인가요? 현재의 insertAfter()가 특별히 허접(죄송)하게 보여서요.
이 function에서 head의 scope가 뭔지 생각해보세요. head에 뭘 assign하건 이 function에서 return하면 끝입니다. *head에 뭔가를 저장한다면 head에 들어있는 address에다가 저장하는 것이니까 얘기가 달라질 수 있고요. *와 &의 의미를 알면 헷갈리게 없습니다. A pointer of a pointer variable 쯤 되면 조금 헷갈릴 수도 있겠으나…
그밖에 insertAfter의 당장 보이는 문제점을 얘기하자면, null check도 없고 처음에 head에 대한 special case를 넣었는데 그럴 필요가 없습니다. Loop의 initial & terminal condition을 적절히 세트하면 바로 head부터 loop에서 visit하면 됩니다.
insertBefore() 숙제는 스스로 해보세요. 보너스 포인트인가요?