算法——链表(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,在O(1)时间内删除链表结点(链表、算法)。
题目:给定链表的头指针和一个结点指针
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)