经典数据结构实现
文章平均质量分 77
给思维做按摩
这个作者很懒,什么都没留下…
展开
-
基本数据结构之线性表-链表
1、基本数据结构之线性表-链表1.1 单链表 是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 单链表的存储结构示意图: 1.1.1 动态单链表 动态单链表的数据结构可以分成两部分:数据域和指针域,数据域存储数据,指针域指向下一个存储结点的地址。原创 2013-08-23 20:37:39 · 878 阅读 · 0 评论 -
基本数据结构之线性表-顺序表
数据结构有线性结构和非线性结构之分,本数据结构系列将从线性结构讲到非线性结构,并对这些数据结构进行精简实现(C/C++)。1、线性结构之线性表 线性表是这样一种结构,它包含n(n>=0)个数据元素,每个数据元素成为线性表的结点;其中a[0],a[1],a[2]......,a[n-1]组成的有限序列。数据元素的个数n称为线性表的长度 = list.length(),当长度原创 2013-08-23 20:14:22 · 561 阅读 · 0 评论 -
基本数据结构之堆栈
一、基本数据结构之堆栈 堆栈定义:堆栈,也可以直接称为栈。在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只允许在在链接串行或阵列的一端(称为栈顶端,top)进行插入(push),和输出(pop)的运算。‘ 因为堆栈只允许在一段进行操作,因此会按照LIFO(Last In First Out)的原理运作。 堆栈数据结构使用两种基本的运原创 2013-08-23 21:02:03 · 856 阅读 · 0 评论 -
基本数据结构之队列
一、基本数据结构之队列 队列作为计算机系统一种非常常见的数据结构被大家所熟知。同堆栈一样,队列也是有插入和删除只能在限定段的线性表。 队列是一种FIFO(First In First Out)的线性表。具体通常用链表或数组来实现。队列只允许在后端(rear)进行插入操作,在前段(front)进行删除操作。 队列的操作方式和堆栈类似,唯一的区别原创 2013-08-24 09:36:09 · 743 阅读 · 0 评论 -
基本数据结构之二叉树
1、二叉树二叉树,顾名思义,有两个树杈,说的更书面一些,有两颗子树,称为左子树和右子树,左子树和右子树分别是二叉树,二叉树是递归定义的,所以二叉树的一些操作都可以用递归的方式来解决。下面介绍下根据二叉树的定义推出的一些二叉树的基本性质:1)每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。2)二叉树的第i层至多有个 结点3)对任原创 2013-08-24 12:08:17 · 818 阅读 · 0 评论 -
基本数据结构之AVL树-简单实现
一、AVL 简介 AVL树是一种平衡的BST,关于BST,参看另一篇博文 AVL树的平衡因子的计算公式为:factor = height(lchild) - height(rchild); 在AVL树中,每个结点的平衡因子不超过1。在实际应用中,尽管结点的平衡因子能够通过它的子树计算出来,但是结点的平衡因子一般是存储在结点信息中的。 在一颗包含N个结点的AV原创 2013-08-26 11:08:09 · 698 阅读 · 0 评论 -
基本数据结构之AVL树
AVL树即自平衡二叉查找树。在AVL树中,任何两个结点的两个子树的高度最大差别为1,所以AVL树也被称为高度平衡树。AVL树在插入和删除和查找的时间复杂度在平均和最坏情况下都是O(log N),插入和删除需要通过1次或者多次旋转重新使树达到平衡。怎么判断AVL树是平衡的呢?需要通过平衡因子来来判断,结点的平衡因子是是它的左子树高度减去右子树高度.平衡因子为1、0、-1的结点是平衡的。反之,原创 2013-08-25 15:29:06 · 635 阅读 · 0 评论 -
基本数据结构之Binary Search Tree
一、二叉查找树的实现(C)1)二叉查找树的结点结构 typedef struct node{ int data; struct node* lchild; struct node* rchild;} BSTnode;2)创建一个新结点BSTnode* create_node(int data){ BSTnode *new_no原创 2013-08-26 09:50:59 · 831 阅读 · 0 评论 -
基本数据结构之最大堆最小堆
基本数据结构之最大堆最小堆堆是这样的一种数据结构,原创 2013-08-30 19:22:10 · 1736 阅读 · 0 评论