以typedef开头的是给已有数据类型定义一个别名,可理解为定义一个新的数据类型名。所以 typedef ListNode *LinkList;是定义一个已有的数据类型( ListNode * )的一个新名:LinkList并且是一个指针数据类型。ListNode *p;只是定义了一个指针变量,和LinkList head 定义指针变量一样。即:ListNode* p;和LinkList p是相同的效果,注意后一个p前无“*”