Q:输入一个链表,反转链表后,输出链表的所有元素。
A:1、先在原链表的头节点前再添加一个头结点;
2、使用头插法逆置新加入头结点后的所有节点。
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { if(NULL == pHead || NULL == pHead->next) { return pHead; } ListNode *p, *q; ListNode *tmp = new ListNode(0); tmp->next = pHead; p = tmp->next; tmp->next = NULL; while(p) { q = p; p = p->next; q->next = tmp->next; tmp->next = q; } return q; } };