Reverse Linked List解题报告

Description:

Reverse a linked list.

Example:

For linked list 1->2->3, the reversed linked list is 3->2->1

Link:

http://www.lintcode.com/en/problem/reverse-linked-list/

解题思路:

针对每个节点curr,只要改变该节点的next,让其指向curr前一个节点(需要用一个变量prev储存),然后再对这个节点的下个节点进行相同的操作。
这道题搞清楚以后,针对k-group那道题的反转代码就会写了。

Tips:

在进行反转操作之后,head已经不是第一个节点了而是最后一个,此时用dummy并不好用,反而直接返回prev这个点方便。

Time Complexity:

O(n),n为节点个数

完整代码:

ListNode *reverse(ListNode *head) { ListNode *temp; ListNode *curr = head; ListNode *prev = NULL; while(curr != NULL) { temp = curr->next; curr->next = prev; prev = curr; curr = temp; } return prev; }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容