数据结构 链表的反转

Evelyn

QQ:1809335179

struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
		val(x), next(NULL) {
	}
};
ListNode* ReverseList(ListNode* pHead) {
	if (pHead == NULL)
		return 0;
	ListNode *pre, *Next;
	pre = pHead;
	pHead = pHead->next;
	pre->next = NULL; //要把头节点的下一节点置为空
	while (pHead) {
		Next = pHead->next;  //先对下一节点进行保存
		pHead->next = pre;//再将当前节点反转
		pre = pHead;      //反转后,当前节点的下一节点为当前节点
		pHead = Next;      //遍历下一个节点
	}
	return pre;   /*注意这里是返回保存下来的当前结点,也就是最后一个节点,
				  反转后的头节点,而不是pHead节点,因为此时pHead节点已为空*/
}


你可能感兴趣的:(数据结构)