区别
sort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数,
只要注明 使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针和尾指针;
默认sort排序后是升序,如果想让他降序排列,可以使用自己编的cmp函数
bool compare(int a,int b)
{
return a>b; //降序排列,如...
分类:
其他好文 时间:
2015-03-31 16:10:56
阅读次数:
196
问题:一个字符串S(暂时只考虑小写字母),选择S中包含26种英文字母的最短子串,如果不包含则返回空字符
分析:双指针,动态维护一个区间。尾指针不断往后扫,当扫到有一个窗口包含了所有26种英文字母的字符串后,再收缩头指针,直到不能再收缩为止。最后记录所有可能的情况中窗口最小的。
代码示例:
#include
#include
#include
using namespace std;
c...
分类:
其他好文 时间:
2015-03-16 11:06:33
阅读次数:
105
一,时间性能的比较顺序表由数组实现,是一种随机存取结构,对表中任意节点存取操作时间复杂度为O(1)。而查找链表的节点,须从头指针开始沿链扫描,平均时间复杂度为O(N).因此,若线性表的操作主要是查找,很少进行插入或删除操作,采用顺序比较合适。对于链表,对某个节点进行插入删除操作只需修改指针,无需大量...
分类:
其他好文 时间:
2015-03-12 19:02:09
阅读次数:
221
给定一个单链表,只给出头指针h:
1、如何判断是否存在环?
2、如何知道环的长度?
3、如何找出环的连接点在哪里?
4、带环链表的长度是多少?
解法:
1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。
2、对于问题2,记录下问题1的碰撞点p,slow、fast...
分类:
其他好文 时间:
2015-03-10 00:15:52
阅读次数:
117
队列可以使用数组或者链表实现,这里介绍一种使用数组实现的循环队列。
所谓循环队列,是指当尾指针超过数组索引界限时,通过取余运算返回数组起始端,只要保证尾指针和头指针不相遇,就可以继续存储元素。
首先设定队列的大小,并建立队列结构体:
#define MAXSIZE 100001
typedef struct {
int items[MAXSIZE];
int front;
int r...
分类:
其他好文 时间:
2015-03-05 23:46:36
阅读次数:
280
head 头指针#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define REP(i,N)...
分类:
其他好文 时间:
2015-02-24 10:15:55
阅读次数:
175
双向链表 只是 比 单链表 多了 一个 指向 前驱的 指针,在插入 和 删除 元素的 时候 得多处理一些。其余 没什么 区别。
而循环链表 的 尾指针 不再 指向 NULL,而是 指向 头指针,这样 既可以循环遍历,又节省 存储空间 。
每种链表 都有 好处,至于 如何 取舍,得看需求。
下面 奉上 双向链表的实现代码:
// DoubleLinkList.cpp : 定义控制台应...
分类:
其他好文 时间:
2015-02-15 16:40:14
阅读次数:
166
链队列的实现方法: 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,简称为链队列。为了操作上的方便,我们将队头指针指向链队列的头节点,而队尾指针指向终端节点。空队列时,front和rear都指向头节点。 注意:这里的实现是有头结点的,在队列的初始化函数中要为头结点开辟空间。 链...
分类:
其他好文 时间:
2015-02-10 18:14:28
阅读次数:
240
栈的定义:当单链表限定只能在头部进行插入和删除操作的时候,就是链栈。同时把栈顶放在单链表的头部,使单链表的头指针和栈顶指针top合二为一,所以对于链栈,就不再需要头结点了。这时对链栈的push也就相当于单链表的头插法。同时对链栈来说,基本不存在栈满的情况,除非内存已经没有可以使用的空间了,对于空栈来...
分类:
其他好文 时间:
2015-02-10 01:50:43
阅读次数:
129
首先作这个题,最直接的思路是两个for循环,然而所带来的缺陷是时间复杂度太高O(n2)。所以要转变思路:如何能一次遍历就解决问题?因为是两个数相加来得到一个既定的数(target),那就有一个思路是:能不能两头相加,然后通过头指针和尾指针来回向中间靠拢来实现?答案是可以的。分两步走:排序设置头、尾两...
分类:
编程语言 时间:
2015-02-02 19:32:32
阅读次数:
164