既然是链表,ListNode应该是列表节点类型,包含Type(或对Type对象有所有权,能负责该子对象内存管理的类型,如std::auto等,或者用Type*且手动实现delete)类型的数据域和ListNode*类型的指针域。Type *类型是指向Type类型的指针,没有包含指针域信息,不能从中得到相邻节点的关系(对于单链表就是指向下一个节点的指针),作为head->next()的返回值类型是不合理的。因此不能用Type *p=head->next();代替ListNode *p=head->next();。
====
[原创回答团]