## 方法一

• 常规思路，简洁，清晰，我觉得写得蛮好的。

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* newh = NULL;
for(ListNode* p = pHead; p; )//p为工作指针
{
ListNode* tmp = p -> next;//temp保存下一个结点
p -> next = newh;
newh = p;
p = tmp;
}
return newh;
}
};

• 这是我一开始写得，留着对比用，衬托，哈哈哈

class Solution {
public:
ListNode *res,*cur,*next;
res = new ListNode(-1);
next = cur->next;
while(cur != NULL)
{
ListNode *first = res->next;
cur->next = first;
res->next = cur;

cur = next;
next = next->next;
}
return res->next;
}
};

## 方法二

……

class Solution {
public:

ListNode *res,*first,*temp;
res = new ListNode(-1);

first = res->next;       //first 始终为第一个结点，不断后移
while(first->next!=NULL) //temp为待前差的
{
temp = first->next;
first->next = temp->next;
temp->next = res->next;
res->next = temp;
}

return res->next;
}
};

## 方法三

#### 单向链表反转（倒置）问题

2017-03-14 19:40:02

#### 链表翻转的图文讲解（递归与迭代两种实现）

2017-05-17 15:25:20

#### Java单链表反转 详细过程

2016-04-11 10:36:57

#### 看图理解单链表的反转

2011-10-02 22:36:31

#### 单链表反转

2013-04-25 16:20:26

#### 链表反转

2011-09-29 10:03:16

#### 秒懂单链表及其反转(reverse)

2015-04-29 23:00:36

#### 单链表实现反转的三种方法

2017-07-17 20:03:31

#### 反转单向链表和反转双向链表

2017-03-17 20:32:24

#### 算法学习之链表反转

2015-06-20 12:33:16