최근 \"C로 배우는 쉬운 자료구조\"란 교재로 자료구조 공부를 마치고 요새 뇌자알로 알고리즘 공부를 하는데 뇌자알에서 linked stack부분에

push함수가 이해는 가는데 왜 이렇게 구현하는지 모르겠어요...

 제가 자료구조를 공부할 때 책에서 push함수는

 NODE* n=malloc(sizeof(NODE));
 n->data=item;
 n->link=top; // top=NULL;이라고 저장
 top=n;

 로 top이라는 하나의 포인터로 단 4줄만에 push 동작 수행할 수 있었는데 

 뇌자알에서의 push함수는 왜 굳이 최하위 노드(헤드 노드)를 가리키는 list와 최상위 노드(테일 노드)를 가리키는 top이라는 두개의 포인터를 이용하여 

삽입하는지 잘 이해가가지 않아요... 제발 가르쳐주세요 형님들...