if(n==1)head=p1; else p2->next=p1; p2=p1;
为什么要让p1赋给p2?
为了下一次输入时能够得到这个链表的尾结点,然后将这次的输入生成的结点链接到链表的最后成为新的尾结点,以此类推。如果不能很好理解的话,可以自己动手画一张图(下面的图仅是参考),会清晰很多: )