数据结构专栏
JaymeYang
好代码,用心造。
展开
-
数据结构-二叉查找树(BST)
二叉查找树是一种比较特殊的二叉树,表现为任意节点的值都比左孩子的值要大,而且小于等于右孩子的值,采用中序遍历BST(Binary Search Tree)就可以的到排序好的元素集合,而且插入删除的时间消耗也比较合理,但是有一个缺点就是内存开销有点大,下面简单介绍BST。下面就是两棵二叉查找树BST实现主要采用递归来实现,所以在学习实现的过程中也可以加深对递归的理解和掌握。具原创 2014-12-01 19:54:20 · 961 阅读 · 2 评论 -
数据结构-排序
排序问题是数据结构中很重要的一个问题,比如在查找的时候,在一个已经排好序的集合中可以采用二分查找的方法达到高效的查找,而在无序的集合中是没有比较快速查找元素的方法的。这里我将介绍几种常用的基本排序(插入排序,冒泡排序,选择排序)和几种效率比较好的排序(快速排序,归并排序,希尔排序),排序算法被写成了一个静态方法,可以直接调用。下面看具体的排序算法。 在介绍排序算法之前,先简单介绍下交换函数,原创 2014-12-03 17:36:55 · 800 阅读 · 0 评论 -
基于数组和基于链表线性表C++实现
首先,简单介绍下什么是线性表。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。 然后让我们来看看线性表的两种实现方式基于数组(Arraybase list)和基于链表(Linked list)。 一:基于数组的线性表实现 类List...原创 2014-11-29 09:53:06 · 1152 阅读 · 0 评论 -
数据结构-堆栈和队列
在数据结构中,有些简单的线性结构是非常常用的,比如说堆栈可以用于实现函数的调用,队列可以处理一些需要排队的问题,下面就简单介绍一下这两种数据结构。一:堆栈 堆栈是一种特殊的数据结构,特点是FILO(First In, Last Out),而且处理的元素也只可以在栈顶这一端。下面给出堆栈常用接口,例如进栈出栈,查看栈顶元素等。#ifndef STACK_H#define STACK_H#i...原创 2014-11-29 20:06:10 · 804 阅读 · 0 评论 -
数据结构-最大值堆原理和实现
堆(Heap)是由完全二叉树实现的,具体关于完全二叉树的性质等,下面会简单介绍。堆分为最大值堆和最小值堆,最大值堆中所有元素都大于它的孩子的值,最小值堆中所有元素的值都小于它孩子的值。一:完全二叉树所谓完全二叉树最基本的还是一棵二叉树,即一个节点最多有两个子节点,最少有0个子节点(即是叶子节点),而二叉树里面又有一种比较特殊的二叉树叫做满二叉树。满二叉树的特点就是除了叶子节点之外,所有的节点都有两...原创 2014-11-30 16:12:53 · 2873 阅读 · 1 评论