代码改变世界

算法——链表(14%)

2012-12-18 15:12  msfte  阅读(335)  评论(0编辑  收藏  举报

 1,把二元查找树转变成排序的双向链表(树) 

2,判断俩个链表是否相交(链表可能有环,求出俩个链表相交的第一个节点) 

 3,颠倒一个链接表的顺序。(递归非递归)

4, 输入一个单向链表,输出该链表中倒数第

k个结点。链表的倒数第0个结点为链表的尾指针。  

5,链表操作,单链表就地逆置,

6, 一串首尾相连的珠子

(m),有N种颜色(N<=10)

设计一个算法,取出其中一段,要求包含所有

N中颜色,并使长度最短。

7, 请修改append函数,利用这个函数实现(链表):

两个非降序链表的并集,

1->2->3 2->3->5 并为1->2->3->5

另外只能输出结果,不能修改两个链表的数据。

 

8, 从尾到头输出链表(链表)。

9,O1)时间内删除链表结点(链表、算法)。

题目:给定链表的头指针和一个结点指针

10, 找出链表的第一个公共结点(链表)。

11, 复杂链表的复制(链表、算法)

题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,

还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下:

12, 给定单链表,检测是否有环。找第一节点。

13, 只给定单链表中某个结点p(并非最后一个结点,即p->next!=NULL)指针,删除该结点。

14,只给定单链表中某个结点p(非空结点),在p前面插入一个结点。

 15,链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g 

 16,链表克隆。链表的结构为: 
     typedef struct list { 
         int data; //数据字段 
     list *middle; //指向链表中某任意位置元素(可指向自己)的指针 
     list *next;//指向链表下一元素 
     } list; 

17,找出两个单链表里交叉的第一个元素 

18,求链表的倒数第二个节点

19,对一个链表进行排序,效率越高越好

20,链表倒数第n个元素

21,单链表变形 如 1 2 3 4 5 变为 1 3 5 4 2   如1 2 3 4 变为 1 3 4 2 
     (就是拆分链表 把偶数为反过来接在奇数位后面)

22,单链表Merge

23,实现完整单链表(Init,Search,Insert,Update,Delete,Length)

 

24,实现完整双链表(Init,Search,Insert,Update,Delete,Length)