链表
文章平均质量分 66
dongqinging
这个作者很懒,什么都没留下…
展开
-
O(1)时间删除链表结点java
题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。 当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。 假定待删除结点在链表中。 /* * O(1)时间删除单链表某一结点 */ public原创 2016-03-06 10:07:55 · 1573 阅读 · 0 评论 -
链表中倒数第k个结点java
题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。 思路:两个指针,需要注意链表总数是否少于k。 /* * 求链表的倒数第k个结点 */ public static ListNode findKthToTail(ListNode head,int k){ if(head==null || k==0) retur原创 2016-03-06 12:29:12 · 1534 阅读 · 0 评论 -
反转链表Java
题目:定义一个链表,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思路:反转链表时,为了保证链表不断开,需要保存三个引用,指向前一结点的引用,当前结点的引用,指向后一结点的引用。 //反转链表 public static ListNode reverseList(ListNode head){ if(head==null)return null; ListNode re原创 2016-03-06 13:06:04 · 459 阅读 · 0 评论 -
合并两个递增排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 package offer; public class MergeSortedLists { public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNod原创 2016-03-06 16:55:07 · 692 阅读 · 0 评论 -
两个链表的第一个公共结点
题目:输入两个链表,找出它们的第一个公共结点。 package offer; /* * 两个链表的第一个公共结点 */ public class FindFirstCommonNode { public static ListNode findFirstCommonNode(ListNode root1, ListNode root2){ int length1 = getList原创 2016-03-12 19:24:26 · 345 阅读 · 0 评论