自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大黄鸭

默默前行

  • 博客(12)
  • 收藏
  • 关注

原创 数据结构与算法分析(c++版) #12 二叉树

二叉树        二叉树的定义与特性:           参考百度的二叉树定义:百度二叉树        二叉树类型:       (1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。       (2)满二叉树——除了叶结点外每一个结点都有左

2015-09-28 20:08:29 644

原创 数据结构与算法分析(c++版) #11 链式队列

链式队列       链式队列(linked queue)的实现是对链表实现做了简单的修改。下面代码给出了链式队列类的说明。成员front和rear分别是指向队首和队尾元素的指针。链式队列的实现也不需要表头元素。template class LQueue : public Queue{private: Node* front; // 队首元素 Node* rear; // 队尾元素

2015-09-24 15:45:49 663

原创 数据结构与算法分析(c++版) #10 顺序队列

顺序队列       有效地实现顺序队列有些棘手,因为如果只是对顺序表的实现进行简单转换,效率不会很高。       假设队列有n个元素,实现顺序表需要把所有元素都存储在数组的前n个位置上。如果选择队列的尾部元素放在位置0,则dequeue操作的时间代价仅为θ(1),因为队列最前面的一个元素(要被删除的元素)是数组最后面的一个元素(处于位置n - 1)。但是enqueue操作的时间代价为θ

2015-09-24 10:57:21 629

原创 数据结构与算法分析(c++版) #9 队列

队列       同栈一样,队列(queue)也是一种受限的线性表。队列元素只能从队尾插入(称为入队操作,enqueue),以及从队首删除(称为出队操作,dequeue)。队列操作像在电影院前排队买票一样。如果没有人为的破坏,那么新来者应该站到队列的后端,在队列最前面的人是下一个被服务的对象。因此,队列是按照到达的顺序来释放元素的,即“先进先出”(First In First Out)。

2015-09-24 10:41:57 552

原创 数据结构与算法分析(c++版) #8 顺序栈和链式栈

顺序栈       顺序栈继承了虚拟栈类,并用数组存储栈的元素。顺序栈的实现,本质上是顺序表实现的简化。顺序栈以线性表的表尾作为栈顶,即当栈中有n个元素时把位置n-1作为栈顶,这样每次push或者pop操作的时间代价仅为θ(1)。       下面是顺序栈的实现:template class AStack : public Stack{private: int size; //

2015-09-23 20:20:10 843

原创 数据结构与算法分析(c++版) #7 栈

栈       栈(stack)是限定仅在一端插入或删除的线性表。虽然这个限制减小了栈的灵活性,但也使得栈更有效且更容易实现。许多应用都只需要栈提供受限制的插入和删除操作形式,在这种情况下使用较简单的栈比使用一般的线性表更有效。       栈遵守“后进后出”(Last In First Out)的原则,这意味着栈存储和删除元素的顺序与元素到达的顺序相反。习惯上称栈的可访问元素为栈顶(to

2015-09-23 19:28:18 617

原创 数据结构与算法分析(c++版) #6 双链表

双链表       单链表只允许从一个表结点直接访问它的后继结点,而双链表可以从一个表结点出发,在线性表中随意访问它的前驱结点和后继接电脑。双链表存储两个指针,使这些成为可能:一个智指向它的后继结点(与单链表相同),另一个指向它的前驱结点。如下图:                          下面是双链表的结点类实现:template class Node{privat

2015-09-18 19:20:18 730

原创 数据结构与算法分析(c++版) #5 可利用空间表提高链表效率

可利用空间表       因为编译器要求存储分配和回收管理能够处理任何格式的new/delete操作,因此与只处理一定格式内存访问的存储分配和回收管理特例相比,他们的效率就不太高了。在链表的实现中,线性表结点的建立和删除使得编写Node类的程序员能够提供简单而有效的内存管理例程,以取代系统级的new和delete。可利用线性表存放当前那些不用的线性表结点,从一个链表上删除的结点就可放到空间表的

2015-09-18 18:46:48 1235

原创 数据结构与算法分析(c++版) #4 单向链表

链表    线性表的另一种实现方法是利用指针,这种表示方法通常称为链表,链表是动态的,也就是说它能按照需要为表中新的元素分配存储空间。       链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。单链表       链表的结点类中只有一个指向表中

2015-09-16 15:59:57 732

原创 数据结构与算法分析(c++版) #3 顺序表的实现

顺序表       顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。       下面是顺序表的实现:template class AList : public List{private: Elem* l

2015-09-15 20:12:12 987

原创 数据结构与算法分析(c++版) #2 初涉线性表

线性表        线性表的定义:是由称为元素的数据项组成的一种有限且有序的序列。这个定义中有序是指线性表中的每一个元素都有自己的位置。       线性表不含任何元素时,我们称之为空表(empty list)。当前储存的元素数目成为线性表的长度(length)。线性表的开始结点成为表头(head),结尾结点成为表尾(tail)。表中的元素的值与它的位置之间可以有联系,也可以没有联系,因

2015-09-15 16:18:55 983

原创 数据结构与算法分析(c++版) #1

一、什么是数据结构?        要想知道什么是数据结构,首先要了解一些数据类型。        类型(type):是一组值得集合。例如布尔类型由true和false这两个值组成,整数也构成类型。       数据类型(data type):是指一种类型和定义在该类型上的一组操作。例如,一个整数变量是整数数据类型的一个成员,而加法是定义在整数数据类型上的一种操作。

2015-09-15 12:45:44 1342

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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