/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
*
* @param pHead ListNode类
* @return ListNode类
*/
struct ListNode* ReverseList(struct ListNode* pHead ) {
// write code here
// 就地尾插法
struct ListNode *p=pHead,*q=pHead->next;
struct ListNode *first = (struct ListNode*)malloc(sizeof(struct ListNode));
first->val = NULL; //创造头结点
first->next = pHead;
if(pHead == NULL || pHead->next == NULL)
return pHead;
while(p->next!=NULL){
p->next = q->next;
q->next = first->next;
first->next = q;
if(p->next!=NULL)
q = p->next;
}
free(first);
return q;
}