- 博客(12)
- 资源 (25)
- 收藏
- 关注
原创 经典数据结构之数组实现的队列
队列和栈是最为基础的也是最为重要的数据结构。它采用先进先出的方式,广泛应用于网络编程中,套接字接受队列,消息队列,以及操作系统的优先队列中。归根到底,它和栈的区别就是每个元素的权重问题,所以可以统一看作一种具有优先级的线性表适配器。本文实现了基于数组的队列,其主要操作是添加和删除元素。为了实现O(1)添加O(1)删除元素,就需要移动队头坐标。.h#ifndef CQUEUE
2013-11-28 23:54:54 725
原创 经典数据结构之链表实现的栈
数组和链表是线性表的两种表现方式,而栈作为一种适配器,既可以用数组实现,也可以用链表实现,由于采用后进先出的方式,两者添加和删除元素都是O(1)的。主要区别之处是数组本身使用的空间较小,因为只需要用n个元素外加长度属性就好了。链表使用的空间较大,这是因为节点本身需要一个指针和数据来表示。#include #include templatestruct CLinkStack;temp
2013-11-27 23:50:52 561
原创 经典数据结构之稀疏矩阵
数据的存储形式,不外乎链表和类数组两种。使用二维数组存储矩阵,如果该矩阵是稀疏的,那么会浪费很多空间。例如一个4*4的对角阵,很明显,只有主对角线上才有元素。那么使用二维数组存储需要16个单位的 存储空间。然而通过定义一个结构体:templatestruct SDataType{ friend class CSparseMatrix; int m_nRow; int
2013-11-26 23:44:32 855
原创 经典数据结构之矩阵的基本运算
用一维数组来表示矩阵其实质与二维数组没啥区别,只是多了下标一步映射而已。由于方法本身很简单,所以不多做介绍。很容易扩展转置等方法,从而实现一个更为全面的矩阵类型。CMatrix.h#ifndef CMATRIX_HHH#define CMATRIX_HHH#include #include #include templateclass CMatrix{private: /
2013-11-24 21:05:00 2006
原创 经典数据结构之二维矩阵的基本运算
数组的数组即是矩阵,这篇文章就是很好的例子。往往我们会抱怨c++ std里面没有现成的矩阵运算库,其实,矩阵运算十分容易构造,不论是二维数组,还是经过打包的数组,甚至是vector等容易,都可以很轻易地做出扩展,满足我们复杂的要求。具体代码如下所述:.h文件#ifndef CARRAY2D_HHH#define CARRAY2D_HHH#include #include
2013-11-21 23:26:19 1960
原创 经典数据结构之一维矩阵的基本操作
矩阵是用来进行大型数据处理的常用数据表达形式。最基本的矩阵自然是一维矩阵,而从概念上,数组可以看作一个一维矩阵。另一方面,数组的数组即是二维矩阵。其实,通过下标映射,一维矩阵可以表达所有维度的矩阵。下面先由一维矩阵说起。.h文件#include #include #include templateclass CArray1D{private: // members; int
2013-11-18 23:39:10 3419
原创 经典数据结构之内存池技术
一般来说,使用堆来动态分配内存是常用的方式。然而,如果不断申请堆,会造成内存碎片,以至于由于堆本身大小的限制,难以再申请出连续空间的堆,显然造成了内存利用不合理。所以,有必要对内存申请进行一些管理。对于大型程序来说,很必要,提前申请一定量的堆,一定比不断申请快很多。使用数组方式,可以很快检索到可用的空间,并O(1)进行存取,而节点做成链表结构,更可以在O(1)释放某个空间之后找到合适的节点进行分配
2013-11-12 10:00:46 1069
原创 经典数据结构之间接寻址
线性表主要有两中表现方式,一种是连续存储式,例如数组,另一种是非连续存储式,例如链表。 相比于链表,数组最大的好处就在于可以随机存取,链表的最大优势是,能够有效利用存储空间,合理的添加,删除操作只需要o(1)。于是诞生了间接寻址,即是把数组与链表的优点结合起来。代码如下:#ifndef INDIRECTLIST_HH#define INDIRECTLIST_HH#include
2013-11-11 19:21:18 1033
原创 经典数据结构--双向链表
双向链表是数据存储的一种表达方式。相比单链表本身,双向链表有一个很重要的优势就是,可以回头,然而也因此需要付出多个指针的存储空间代价。代码如下所示:#ifndef DOUBLELIST_HHH#define DOUBLELIST_HHH#include templateclass CDoubleList;templatestruct SDNode{private
2013-11-06 23:29:23 490
原创 经典数据结构与算法之循环单链表
循环链表是链表的经典变种,它可以解决很多问题。比如有个考察大数据的问题,假如有10亿个数据,如何选出其中最大的十个数。显然,我们可以构造一个循环链表,然后依次插入这10亿个数,与之前最大的数进行比较,如果大则插入,否则跳过。思路很简单,循环链表唯一的不同之处是,尾节点的next指针指向头结点。具体地说代码如下:#ifndef CIRCULARLINK_HHH#define CIR
2013-11-04 22:46:24 591
原创 泊松随机数产生
随机数是计算机模拟仿真领域里面最常见的。随机数发生器,广泛应用于系统分析,例如网络中请求量到达,以及其他排队原理中。代码如下,远离后续再补充:#ifndef POSSION_HHH#define POSSION_HHH#include #include #include #include using namespace std;#define DEBUGvoid See
2013-11-04 13:26:30 1866
原创 经典数据结构--简单链表
链表作为最为常见的数据结构,它不需要连续的存储空间,插入和删除操作可以做到o(1)。可以说是链式数据结构的基础,树,图等其实都是复杂链表。针对专门的问题,例如跳表,循环队列等,都是各个面试常遇到的问题。具体代码如下所述,主要实现了关键部分,未考虑异常(无法申请空间等)情况。#ifndef CLINEARLINK_HHH#define CLINEARLINK_HHHtemplatec
2013-11-02 22:12:26 571
Deeplearning with graph structured representations.pdf
2020-05-13
Vector field processing
2018-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人