S应该是一个栈,top应该是栈顶指针。则*S.top=e;就是将e压入到当前栈顶,S.top++;则是将栈顶指向下一个空闲位置。
要使p始终指向单链表的最后一个结点。在p->next=s后,s为最后一个结点,p=s使p重新为最后结点。