20、蛤蟆的数据结构笔记之十九双向链表
本篇名言:“人的生命,似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花。”
之前实现的都是单向列表,那么我们来看下双向链表。
欢迎转载,转载请标明出处:
1. 双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访...
分类:
其他好文 时间:
2015-07-01 10:11:23
阅读次数:
103
一、如何判断链表中有无环解法:设置了两个指针p和q,他们分别以速度为1和2前进(公式应该是p和q分别以速度为v1和v2且|v2-v1|为1),如果到某一次循环发现他们相等,即都指向同一结点(空节点除外,以后讨论的节点都不包含空节点),则说明这个单向链表中存在循环。否则就是没..
分类:
编程语言 时间:
2015-07-01 06:21:05
阅读次数:
173
快速排序算法,在剑指offer里面的一种实现:算法的整体采用递归,将数组分成两部分,前面一部分都比后面那部分的值小,而将这两部分再接着进行递归的排序.这其中最重要的是怎么去将其分成两部分,剑指offer上的办法是采用从前往后的遍历,将最后一个值end处作为中间的关键字,然后两个指针,一个是遍历的in...
分类:
编程语言 时间:
2015-06-30 12:16:37
阅读次数:
128
双向链表的定义 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 注意:在实现的过程中,要分清前驱指针和后继指针,不要把他们当成一个指针。1 .....
分类:
其他好文 时间:
2015-06-26 14:57:09
阅读次数:
174
题目意思:给一个乱序数组,在里面寻找三个数之和为0的所有情况,这些情况不能重复,增序排列思路:前面2sum,我用的是map,自然那道题map比双指针效率高,这道题需要先排序,再给三个指针,i、j、k 对于i指针从前往后遍历,对于一个固定的i指针,其实就是2Sum的情况,给定一前一后两个指针进行遍.....
分类:
其他好文 时间:
2015-06-23 15:27:04
阅读次数:
109
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
归并操作的工作原理如下:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初位置分别为两个已经排序序列的起始位置
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
...
分类:
编程语言 时间:
2015-06-23 13:37:15
阅读次数:
133
题目:输入一个整数数组,实现一个函数来解决该数组中数字的位置,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。本题思路较为简单,我们只需维护两个指针:第一个指针pHead 初始化为数组的第一个元素,第二个指针pTail 初始化为数组的最后一个元素。根据题目要求:所有奇数位于数组的前半部分...
分类:
编程语言 时间:
2015-06-19 21:36:22
阅读次数:
173
问题:现在有两个有序数组A和B,求这两个数组合并之后的第K大的元素。方法一、使用两个指针的方式,归并排序当中合并两个数组的方式,这里不需要排序,只需要找到合并之后的第K个数即可,所以需要两个指针。时间复杂度为$O(K)$方法二、使用折半搜索的方式将复杂度将为$O(log(K))$算法的大体思想是:假...
分类:
其他好文 时间:
2015-06-15 15:57:59
阅读次数:
108
原创作品,转载请注明出处:点我假设A表示目标字符串,A="abababaababacb",B表示匹配模式,B="ababacb"用两个指针i和j分别表示,A[i-j+1 .... i]与B[1...j]完全相等。也就是说,i是不断增加的,随着i的增加j相应的变化,且满足以A[i]结尾的长度为j的字符...
分类:
编程语言 时间:
2015-06-15 00:01:36
阅读次数:
293
题目意思:链表有环,返回true,否则返回false思路:两个指针,一快一慢,能相遇则有环,为空了没环 ps:很多链表的题目:都可以采用这种思路 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * ...
分类:
其他好文 时间:
2015-06-14 16:30:04
阅读次数:
133