随笔分类 -  List

摘要:sibling链表:链表的节点信息,除了next的指向以外,还有sibling的指向。请复制该链表。带环链表:一个单链表(带环),如何找到环的入口点。环形链表:0、1...n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第n个数字。求这个圆圈里剩下的最后一个数字。双向链表:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。1、思路: 参见剑指offer的26题CloneNodes 1 ComplexListNode* Clone(ComplexListNode* pHead) 2 { 3 CloneNodes(pHead); 4 ConnectSibl... 阅读全文

posted @ 2013-04-14 16:39 月moon鸟 阅读(192) 评论(0) 推荐(0)

摘要:参考:http://zhedahht.blog.163.com输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照增序排列的。输入两个单链表(无环),找出他们的第一个公共节点。判断两个单链表(可能有环)是否相交。1、思路: 类似与归并排序,但是这里只需要修改指针指向,不需要另辟空间,通过递归的方式,从后往前拼接链表。MergeList 1 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 2 { 3 if(pHead1 == NULL) 4 return pHead2; 5 else if(... 阅读全文

posted @ 2013-04-10 13:08 月moon鸟 阅读(188) 评论(0) 推荐(0)

摘要:参考:http://zhedahht.blog.163.com/输入一个链表的头结点,从尾到头反过来打印出每个节点的值。给定单向链表的头结点和一个结点指针,定义一个函数在O(1)时间删除该结点。输入一个单链表的,输出该链表中倒数第k个结点。定义一个函数,输入一个链表的头结点,反转该链表并输出反转链表的头结点。1、思路: 递归方式:利用栈的“先入后出”的特性,轻松解决。这里提供一个递归方法来模拟栈。PrintListReverse1 void PrintListReverse(ListNode* head)2 {3 if (head != NULL)4 {5 P... 阅读全文

posted @ 2013-04-09 22:49 月moon鸟 阅读(180) 评论(0) 推荐(0)

导航