/*定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
思考题:
请同时实现迭代版本和递归版本。
数据范围
链表长度 [0,30]。
*/
/*定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
思考题:
请同时实现迭代版本和递归版本。
数据范围
链表长度 [0,30]。
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
if (head == NULL || head->next == NULL)
return head;
struct ListNode* p, * q, * pre;
p = head;
q = head->next;
if (q->next == NULL)
p->next = NULL;
while (q->next != NULL)
{
pre = q->next;
q->next = p;
if (p == head)
p->next = NULL;
p = q;
q = pre;
}
q->next = p;
return q;
}