赞
踩
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
# 1.数组替换
我们定义一个数组,从头开始遍历链表,将链表的值保存到数组中,从头开始保存,然后再从头开始遍历链表,将数组的值赋值给链表,这次数组我们从尾开始遍历,这样子从形式上来说,我们也对链表完成了反转
# 2.迭代
链表问题大都都可以运用双指针思路,我们定义两个指针,一个走在前面,一个走在后面,每走一步就让前面的指针指向后面,最后走完就完成了反转,只不过其中得注意,需要申请一个临时变量保存一下快指针的下一步,不然就走丢了
# 3.递归
递归我们值需要搞明白一个
head->next->next = head;
head->next = NULL;
这个两个语句,仔细捋一下,就会发现,这个就完成了两个节点之间的反转,然后我们递归到最后一个节点,并且将其保存为新的头结点,从最后一个节点开始反转节点,就可以完成反转链表
# 1.数组替换
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * struct ListNode *next;
- * };
- */
- /*
- struct ListNode* reverseList(struct ListNode* head)
- *struct ListNode* reverseList:将链表反转
- struct ListNode* head:未被反转的头结点
- 返回值:反转之后的头节点
- */
- struct ListNode* reverseList(struct ListNode* head){
- if(!head)
- {
- return NULL;
- }
- int ans[5001];
- int i, m = 0;
- struct ListNode * l = head;
- while(l)
- {
- ans[m++] = l->val;
- l = l->next;
- }
- l = head;
- while(l)
- {
- l->val = ans[--m];
- l = l->next;
- }
- return head;
- }
# 2.迭代
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * struct ListNode *next;
- * };
- */
- /*
- struct ListNode* reverseList(struct ListNode* head)
- *struct ListNode* reverseList:将链表反转
- struct ListNode* head:未被反转的头结点
- 返回值:反转之后的头节点
- */
- struct ListNode* reverseList(struct ListNode* head){
- if(!head)
- {
- return NULL;
- }
- struct ListNode * cus = head;
- struct ListNode * p = NULL;
- while(cus)
- {
- struct ListNode * n = cus->next;
- cus->next = p;
- p = cus;
- cus = n;
- }
- return p;
- }
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * struct ListNode *next;
- * };
- */
- /*
- struct ListNode* reverseList(struct ListNode* head)
- *struct ListNode* reverseList:将链表反转
- struct ListNode* head:未被反转的头结点
- 返回值:反转之后的头节点
- */
- struct ListNode* reverseList(struct ListNode* head) {
- if (head == NULL || head->next == NULL) {
- return head;
- }
- struct ListNode* newHead = reverseList(head->next);
- head->next->next = head;
- head->next = NULL;
- return newHead;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。