
数据结构
文章平均质量分 61
刘凯宇
这个作者很懒,什么都没留下…
展开
-
Trie树及其应用
一,知识简介 Trie树,又称单词查找树、键树或前缀树。典型应用是用于排序和统计大量字符串,但不仅限于于字符串,所以经常被搜索引擎用于文本词频统计。它的优点是:最大限度的减少无谓的字符串比较,查询效率比哈希表高。 字典树的核心思想是以空间换时间,利用字符串的公共前缀来降低查询时间开销来达到提高效率的目的。 Trie树的特点: (1)根节点不包含字符,除根节点外每个节点只包含原创 2015-11-29 20:20:10 · 381 阅读 · 0 评论 -
STL中常用数据结构
STL中常用的数据结构:[1] stack、queue默认的底层实现为deque结构。[2] deque:用map管理多个size大小的连续内存块,方便头尾插入。[3] vector:变长动态数组,每次增大1.5倍,删除元素时不释放空间。[4] priority_queue底层默认采用vector向量O(nlogn)。[5] list:双向链表容器转载 2016-10-07 20:17:20 · 764 阅读 · 0 评论 -
char *p="abc" 与 char p[]="abc" 的区别
有这样一段代码:[cpp] view plain copy#include "stdio.h" char *get_string_1() { char p[] = "hello world!"; return p; } char *get_string_2() { char转载 2016-11-08 00:24:58 · 597 阅读 · 0 评论 -
前缀,中缀,后缀表达式转换
关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表转载 2016-10-24 09:37:42 · 307 阅读 · 0 评论 -
关于函数返回局部变量的内存细节知识
我们大家都知道指针函数的返回指针不能指向函数内的自动变量,如果需要返回函数的内部变量的话,就需要将该变量声明为静态变量。为什么函数能够返回 静态变量的地址而不能返回局部自动变量的地址,到底什么样的对象能够返回其地址,而什么样的对象不能够返回其地址?静态变量与局部自动变量的主要区别是什 么? 要想明白这些就需要理解程序的内存布局情况 程序的存储区域分为:代码段、只读转载 2016-11-03 11:07:54 · 882 阅读 · 0 评论 -
二叉树的先序中序后序遍历
1,分别写了先序遍历,中序遍历和后序遍历以及层次遍历的非递归算法![cpp] view plain copy // 树的建立和遍历.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using name转载 2016-09-27 00:27:04 · 367 阅读 · 0 评论 -
快速排序及其优化
转载地址:http://blog.youkuaiyun.com/hacker00011000/article/details/521761001、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤: (1)选择基准:在转载 2016-09-05 20:25:34 · 476 阅读 · 0 评论 -
双向队列
转载地址http://www.cppblog.com/wanghaiguang/archive/2012/06/04/177477.htmlC++ Deque(双向队列) 是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块转载 2016-08-21 21:19:43 · 459 阅读 · 0 评论 -
B树、B+树、B*树
B树B树是一种平衡多路查找树,满足下列性质:(1)每个结点的关键字降序排列;(2)第i个孩子的所有关键字(3)所有的叶子结点都在同一层;(4)含有p个关键字的结点有p+1个孩子结点;(5)最小度用t(>=2)来表示,最小度即关键字最少的内结点的孩子数目。根结点的关键字个数为[1,2t-1],非根结点的关键字个数为[t-1, 2t-1]。B树的高度:设总共有n个关键字,最原创 2016-06-15 20:50:15 · 756 阅读 · 0 评论 -
内存分配函数malloc calloc realloc
malloc:原型:extern void *malloc(unsigned int num_bytes); 头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。 功能:分配长度为num_bytes字节的内存块 返回值转载 2016-07-12 15:24:19 · 299 阅读 · 0 评论 -
三种快速排序以及快速排序的优化
http://blog.youkuaiyun.com/insistgogo/article/details/77850381、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中转载 2016-03-04 16:01:44 · 518 阅读 · 0 评论 -
各种内部排序算法时间复杂度比较和排序方法的选择
转载地址:http://blog.chinaunix.net/uid-26565142-id-3126683.html选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有转载 2016-01-25 20:31:17 · 5775 阅读 · 0 评论 -
递归与循环比较
递归的效率问题及递归与循环比较1.所谓的递归慢到底是什么原因呢?大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。具体是每次调用函数本身要保存的内容包括:局部变量、形参、调用函数地址、返回值。那么,如果递归调用N次,就要分配N*局部变量、N*形参、N*调用函数地址、N*返回值。这势必是影响效率的。 2.转载 2016-01-19 10:20:00 · 687 阅读 · 0 评论 -
栈和队列的转换
一、栈和队列 栈和队列是非常常见的数据结构,都是限制存取点的线性结构,在计算机领域中被广泛应用,比如操作系统会给每个线程创建一个栈用来存储函数调用时各个函数的参数、返回地址及临时变量等。栈的特点是先进先出,即最后被压入栈的元素会第一个被弹出,栈与递归联系紧密。队列的特点是先入先出,只允许在表的一端进行插入,在另一端删除元素,队列主要应用于图的遍历。 虽然栈和队列是特点针锋相对原创 2016-01-18 22:18:02 · 1322 阅读 · 0 评论 -
stl hashmap与map hashmap与hashtable
MAP1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能自动建立Key - value的对应。key 和 value可以是转载 2016-11-28 10:51:15 · 255 阅读 · 0 评论