关于遇到过链表问题的一些总结
2017-10-05 12:20
295 查看
在这里我总结了一些在leetcode和平时遇到的一些链表问题,其中有一些问题非常经典,话不多说直接开始吧.
null-<1-<2-<3-<4-<5,但是有人可能认为翻转后是5->4->3->2->1->null,但是这题我们要求保证原来的顺序不能变.
好了,弄清楚题目的要求,我们来分析下吧
如图所示链表头指针是current,我把它的next结点称为next指针
那么开始反转吧,在反转之前防止丢失下一个结点的信息,先保存下一个结点,next = current.next,再把curren指向null,但是我们会发现结点1和2之间失去了联系,由此聪明的小伙伴想到还需要一个指针来保存与前一个结点联系
我把前一个结点称为pre,现在就不用担心结点之间关系丢失,按照之前的思路,完成一次反转之后,只需要把pre ,current,next都向后移动一位就行了.
我们分析完之后就开始coding吧
1.Revere Linked List(leetcode上206题)
题目非常的简单,让你反转一个单向链表.比如说原来的链表是1->2->3->4->5->null翻转后的链表就应该是null-<1-<2-<3-<4-<5,但是有人可能认为翻转后是5->4->3->2->1->null,但是这题我们要求保证原来的顺序不能变.
好了,弄清楚题目的要求,我们来分析下吧
如图所示链表头指针是current,我把它的next结点称为next指针
那么开始反转吧,在反转之前防止丢失下一个结点的信息,先保存下一个结点,next = current.next,再把curren指向null,但是我们会发现结点1和2之间失去了联系,由此聪明的小伙伴想到还需要一个指针来保存与前一个结点联系
我把前一个结点称为pre,现在就不用担心结点之间关系丢失,按照之前的思路,完成一次反转之后,只需要把pre ,current,next都向后移动一位就行了.
我们分析完之后就开始coding吧
public class ReverseLinkedList { private class ListNode{ int val; ListNode next; public ListNode(int val){this.val = val;} } //输入一个链表,反转链表后,输出链表的所有元素。 public ListNode ReverseList(ListNode head) { ListNode current = head; ListNode pre = null; ListNode next ; while (current != null) { next = current.next;//先保存当前结点的下一个结点信息 current.next = pre;//把当前结点指向前一个结点 pre = current;//更新pre指针位置 current = next;//更新current指针位置 } return pre; } }
相关文章推荐
- 关于Linux安装python画图遇到的一些问题总结
- 最近遇到不少客户提出关于PP账户名字需要更改,如何更改的问题。因此在此做个简单的总结,希望能帮到一些朋友!
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- 关于在Spring4 jdbctemplate 遇到的一些基本问题总结
- 关于IIS在使用中遇到的一些问题的总结
- 关于在neoshine linux下使用电视卡遇到的问题和总结
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!
- 关于手机的IMEI号问题的一些总结
- 关于ASPNET在IIS一些问题的经验总结
- 关于ASP.NET在IIS一些问题的经验总结
- 关于ASP.NET在IIS一些问题的经验总结
- [导入]关于ASPNET在IIS一些问题的经验总结
- 关于VMware不完全卸载的一些问题的总结
- 关于用c生成的dll在使用其他供应商的工具创建可执行模块时遇到的一些问题
- 关于ASP.NET在IIS一些问题的经验总结
- 【关于ASP.NET在IIS一些问题的经验总结】
- 关于ASP.NET在IIS一些问题的经验总结
- 关于ASPNET在IIS一些问题的经验总结
- 最近要做个项目,遇到一些关于ansys问题,看看兄弟们能否帮我解决?
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!