数据结构与算法(7) -- 二叉查找树

上一个博客介绍了堆结构,这种结构非常有利于查找最大/最小元素。但是其也有一个非常显著的缺点,对于其他的元素的查找非常困难。这一节将要介绍的是二叉查找树,这种结构保持了这样的特性:其父节点大于左子节点,而小于其右子节点。 另外因为放假的原因将博客停了一段时间,接下来会恢复这个系列。由于后面博主主要...

2019-02-26 15:18:05

阅读数 64

评论数 0

数据结构与算法(6) -- heap

binary heap就是一种complete binary tree(完全二叉树)。也就是说,整棵binary tree除了最底层的叶节点之外,都是满的。而最底层的叶节点由左至右又不得有空隙。 以上是一个对heap的简单介绍。本文将用heap指代此种完全二叉树。那么在实际编写代码的时候怎么...

2019-01-05 15:34:25

阅读数 58

评论数 0

c/c++排坑(5) -- c语言中的申明

C语言的申明总是令人头大,对于这块内容也一直让我头疼。希望通过这篇博客能够稍微梳理一下。材料和例子来源于《C专家编程》 一、C语言的申明的优先级规则 先来个例子,看看下面这行C代码到底是个啥玩意儿: char * const *(*next)(); 1.1 优先级规则 A 申明从它的名字开...

2018-12-16 16:09:12

阅读数 49

评论数 0

数据结构与算法(5) -- deque

vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作。stl中deque与vector最大的差异,一在于deque允许常数时间对头端进行元素的插入操作;二是其由分段连续空间组合而成。 这部分内容的原理讲解起...

2018-12-13 16:00:11

阅读数 47

评论数 0

数据结构与算法(4) -- list、queue以及stack

今天主要给大家介绍几种数据结构,这几种数据结构在实现原理上较为类似,我习惯称之为类list的容器。具体有list、stack以及queue。 list的节点Node 首先介绍下node,也就是组成list的节点。从面向对象的角度来说节点也是就一个类,list里面包含了node对象的实例...

2018-12-12 17:19:59

阅读数 39

评论数 0

c/c++排坑(4) -- c/c++中返回局部变量

返回c语言中的局部变量 先看一段代码猜猜,打印值: #include <iostream> using namespace std; char * func(); int main() { char *buf = func...

2018-12-09 17:16:08

阅读数 399

评论数 0

c/c++排坑(3) -- c/c++中的switch语句

switch语句的简单介绍 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。 switch(expression){ case constant-expression : ...

2018-12-09 16:01:20

阅读数 26

评论数 0

c/c++排坑(2) -- c语言中的符号重载

所谓的符号重载就是在不同的上下文环境里有不同的意义。甚至有些关键字也被重载而具有好几种意义,这也是C语言的作用域规则对程序员不那么清晰的主要原因。 本章内容摘自《c专家编程》P37。 符号 意义 static 在函数内部,表示该变量的值在各个调用间...

2018-12-09 15:14:33

阅读数 30

评论数 0

c/c++编程排坑(1)-- 数据类型的“安静”转换

这里主要介绍ANSI C的特性:当执行算术运算时,操作数的类型如果不同,就会发生转换。数据类型一般朝着精度更高、长度更长的方向转换,整型数如果转换为signed不会丢失信息,就转换为signed,否则转换为unsigned。 算术转换(K&...

2018-12-08 17:30:01

阅读数 36

评论数 0

数据结构与算法(3)- C++ STL与java se中的vector

介绍了stl 中的vector以及使用小细节,并分析了java se Arraylist与Vector的同步问题。

2018-12-06 17:43:26

阅读数 58

评论数 0

数据结构与算法(2)- vector概念介绍

声明:虽然本系列博客与具体的编程语言无关。但是本文作者对c++相对比较熟悉,其次是java,所以难免会有视角上的偏差。举例也大多是和这两门语言相关。 Vector的出现主要是为了解决数组的静态空间的问题。所谓静态空间指的是一旦配置就不能改变。当然如果你硬要重新配置也是可以的,自己重新申请一块空间...

2018-12-04 20:03:12

阅读数 47

评论数 0

数据结构与算法(1)- 数据结构概览

声明:虽然本系列博客与具体的编程语言无关。但是本文作者对c++相对比较熟悉,其次是java,所以难免会有视角上的偏差。举例也大多是和这两门语言相关。 今天先来看看有哪些常见的数据结构(C++ STL视角,其他应该也大同小异吧。哈哈,我猜的!)。所以之后的内容大多从STL出发,然后顺便对比下jav...

2018-11-30 17:08:53

阅读数 43

评论数 0

并行计算实战-双调排序

1.双调序列 假设序列A是一个单调递增序列,B是一个单调di'j递减序列,那么由A与B拼接而成的序列C就是一个双调序列。如图1: 接下来我们要介绍的一个概念是双调分裂操作: 1)将数列的前半部分的各个元素(i值从0到N/2-1)和对应的后半部分的各个元素(i+N/2到N-1)做一一比较;...

2018-10-12 17:16:45

阅读数 79

评论数 0

最长回文子串

1.问题描述  给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba"也是...

2018-10-12 11:13:24

阅读数 29

评论数 0

C++文件读取

c++文件和流:ttp://www.runoob.com/cplusplus/cpp-files-streams.html 到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 本教程介绍如何从文件读取流和向文件...

2018-09-28 15:27:19

阅读数 156

评论数 0

c++ 中 char 与 string 之间的相互转换问题

第一部分: 将  char *    或者    char []   转换为  string 可以直接赋值,转换。       第二部分: 将   string   转换为 char *    或者    char []      string 是c++标准库里面其中一个...

2018-09-27 14:33:24

阅读数 1273

评论数 0

c++ 深入理解虚函数

转载自:https://www.cnblogs.com/jin521/p/5602190.html 为什么使用虚函数?什么是虚函数?虚函数是为了解决什么问题? 面向对象的三大特征: 封装 多态 继承 普通虚函数 虚析构函数 纯虚函数 抽象类 接口类 隐藏 vs 覆盖 隐藏与覆...

2018-09-15 16:35:45

阅读数 25

评论数 0

C++移动构造函数以及move语句简单介绍

转载自:https://www.cnblogs.com/qingergege/p/7607089.html 首先看一个小例子: #include <iostream> #include <cstring>...

2018-09-13 14:34:09

阅读数 46

评论数 0

C和C++内存模型 C和C++内存模型

转载自:https://www.cnblogs.com/Stultz-Lee/p/6751522.html C分为四个区:堆,栈,静态全局变量区,常量区 C++内存分为5个区域(堆栈全常代 ): 堆 heap : 由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new...

2018-09-13 12:19:33

阅读数 146

评论数 0

C++中让人忽视的左值和右值

前言 为了了解C++11的新特性右值引用,不得不重新认识一下左右值。学习之初,最快的理解,莫过于望文生义了,右值那就是赋值号右边的值,左值就是赋值号左边的值。在中学的数学的学习中,我们理解的是,左值等价于等号左边的值,右值等价于等号右边的值;当我们继续学习C语言时,等号=不再叫等号,盖头换面叫做...

2018-09-12 14:26:54

阅读数 51

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭