题目:
给定一个单链表,只给出头指针head:
1、如何判断是否存在环?
2、如何知道环的长度?
3、如何找出环的连接点在哪里?
4、带环链表的长度是多少?
解法:
1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。
2、对于问题2,记录下问题1的碰撞点p,sl...
分类:
其他好文 时间:
2014-07-29 18:03:02
阅读次数:
191
二叉链表存储的思想是让每个节点都记住它的左、右两个子节点,为每个节点增加left、right两个指针,分别引用该节点的左、右两个子节点,如图所示: 其中,每个节点大致有如下定义: 对于这种二叉链表存储的二叉树,如果程序需要,为指定节点添加子节点也非常容易,让父节点的left、right引用指向新节点即可。 Java实现代码: 测试代码: 对于这种二叉链表的二叉...
分类:
编程语言 时间:
2014-07-29 15:06:38
阅读次数:
237
一、ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式。 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到00EFh。也就是说,物理内存和LCD显示屏的对应关系是一种竖屏(240*320)的对应的关系。.....
分类:
其他好文 时间:
2014-07-28 14:37:43
阅读次数:
385
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:笨办法是每个节点再开辟一个属性存放是否访问过,这样遍历一遍即可知道是否有环。但为了不增加额外的空间,可以设置两个指针,一个一次走一步,另一个一次走两步...
分类:
编程语言 时间:
2014-07-25 11:09:21
阅读次数:
206
/*当对单链表理解后,对双链表就好理解多了,单链表就是只有在结构体或者类中只有一个指针用来存储下一个节点的地址,双链表就是在里面有两个指针,一个用来存储上一个节点的地址,一个用来存储下一个节点的地址。这样的链表就叫双链表。*/
#include
using namespace std;
struct Node
{
int a;
Node *prior,*next; ...
分类:
其他好文 时间:
2014-07-21 16:32:55
阅读次数:
218
题意:
n个数字一开始排成一串 有两个指针L和R 指向了这串数字的一个区间的端点 现在有7种操作
1、使一个指针左移
2、使一个指针右移
3、在L后插入一个数字X
4、在R前插入一个数字X
5、删除L所指元素
6、删除R所指元素
7、翻转[L,R]区间
问 m次操作后 整串数字是什么样的
思路:
splay经典维护区间的操作 区间更新(翻转操作) 删除节...
分类:
其他好文 时间:
2014-07-20 22:12:53
阅读次数:
337
1.一个以递增方式排列的链表,去掉链表中的冗余值。
思路一:设有两个指针p和q,使p不动,q依次往后循环直到p->data不等于q->data,再将中间的冗余数据删除。
思路二:设有两个指针p和q,使p在前,q在后,只要找到一个冗余就删除一个,依次往后删除。
输入的链表:1 3 3 3 3 6 6 8 9 10
删除后的链表:1 3 6 8 9 10
比较两种思路,思路二的想法相比于思路...
分类:
其他好文 时间:
2014-07-19 23:26:29
阅读次数:
318
Linked List CycleGiven a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?算法思路1:快慢指针,当两个指针相遇,则表示有环,...
分类:
其他好文 时间:
2014-07-19 18:38:30
阅读次数:
198
1.指针的联动
通过两个指针分别指向前驱和后继结点,并在单向链表上进行移动,当指针指向待处理的结点时,该结点的前驱也有指针指向。
2.设有一个无序单向链表,且数据域的值均不相同,使指针pmin指向最小值结点,并使指针prem指向最小值结点的前驱结点:
代码片段:
for(p = head; p; q = p, p = p->next)
{
if(pmin->data > p->...
分类:
其他好文 时间:
2014-07-18 21:26:41
阅读次数:
231
题意:有一个环形字符串,让你找一个位置切一刀使得字符串字母序最小,输出这个位置。
思路:可以看成两个字符串比较,一个是从下标0开始(0~n-1),一个从下标1开始(1~n-1,0)。
然后两个指针i=0,j=1.从s[i]和s[j]开始比较第k个字符是否相同,当k==len时,返回i,j中的最小值.当s[i+k]和s[j+k]不相同时,若s[i+k]>s[j+k]则可见从s[i+1]到...
分类:
其他好文 时间:
2014-07-16 12:55:27
阅读次数:
190