当前位置:首页 > 编程笔记 > 正文
已解决

单链表相关面试题--2.反转一个单链表

来自网友在路上 195895提问 提问时间:2023-11-20 17:34:06阅读次数: 95

最佳答案 问答题库958位专家为你答疑解惑

/*
解题思路: 此题一般常用的方法有两种,三指针翻转法和头插法
1. 三指针翻转法记录连续的三个节点,原地修改节点指向
2. 头插法每一个节点都进行头插
*/
// 三个指针翻转的思想完成逆置
struct ListNode* reverseList(struct ListNode* head) {if(head == NULL || head->next == NULL)return head;struct ListNode* n1, *n2, *n3;n1 = head;n2 = n1->next;n3 = n2->next;n1->next = NULL;//中间节点不为空,继续修改指向while(n2){//中间节点指向反转n2->next = n1;//更新三个连续的节点n1 = n2;n2 = n3;if(n3)n3 = n3->next;}//返回新的头return n1;
}// 取节点头插的思想完成逆置
struct ListNode* reverseList(struct ListNode* head) {struct ListNode* newhead = NULL;struct ListNode* cur = head;while(cur){struct ListNode* next = cur->next;//头插新节点,更新头cur->next = newhead;newhead = cur;cur = next;}return newhead;
}

 

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"单链表相关面试题--2.反转一个单链表":http://eshow365.cn/6-40529-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!