数据结构之初识庐山求全貌

本文介绍了数据结构的基础概念,包括线性结构如链表、栈、队列,非线性结构如树和图,并讨论了散列表的应用。文章还详细解释了二叉树的不同类型及其特性。

     

      从各个数据结构名词集锦中作为初识庐山求全貌的入口,但求能够在不求甚解中求得清晰的学习脉络。

第一: 总的划分

        1>  线性数据结构

       线性表:n个数据元素组成的有序序列,每个元素本身是非结构的原子类型。

举例:(A,B,C,D)

       广义表:是顺序表的一种扩充,n个数据元素组成的有序序列,但是每个数据元素本身可以具有某种结构。

举例: (A,(B,C,D),F,(E,G))

      2> 非线性数据结构:

       树:数据元素之间具有一对多关系的结构,即除了根节点以外的节点只有一个前驱,可以有零之多个后继节点。

       :数据元素之间具有多对多关系的结构,即每个节点可以有多个前驱和多个后继,任意两个元素都可以相邻。

 

第二: 具体介绍

1>:线性表

顺序表:连续的存储单元存储线性表的数据元素,常用数组实现。

 

链   表:一组任意的存储单元存储线性表的数据元素。常见有单向链表和双向链表,

          两者都是非循环链表,可以在表头或者表尾添加指针域指向表尾或者表头

       成为单向循环链表和双向循环链表。

栈[Stack]    :实施的操作限定在表尾进行。【LIFO:后进先出】

      按照存储方式分为:顺序栈和链栈

队列[Queue]:实施的操作限定在表头和表尾进行。【FIFO:先进先出】

      按照存储方式分为:顺序队列和链队列。顺序队列可以转换为循环队列。

2>:广义表

     广义表作为一种复杂的数据结构,是线性表的扩充,能够表示树结构和图结构。

3>:树

 1: 二叉树存储

   @:数组存储结构:二叉树的大小和形态不发生大的变化时,适合用数组方式存储二叉树。

   @:链式存储结构

     ~ 使用二叉链结构,链表的每个链结点由3个域组成。数据域Data,左节点指针域,右        节点指针域。

     ~ 使用三叉链结构。比二叉链结构多一个指向双亲的指针域,方便找到双亲。

 

2:常见二叉树

   @:二叉查找树:对于树中的每一个节点x,x处的项的值大于x的左子树的所有项的值,小于x的右子树的所有项的值。三个基本操作是:搜索,插入和删除。

   @:AVL树和红黑树:二者是种高度平衡的二叉查找树。所谓平衡理想情况下是指对于每一个节点,它的左子树和右子树的高度是相等的。高度平衡指允许对理想情况做稍小改动:每一个节点的左子树和右子树的高度差至多为1.至于如何做到平衡,才是核心。

   @:哈夫曼树:对于给定n个叶子节点,每个叶子节点赋予权值,所有叶子节点的带权路径最小的二叉树称为哈夫曼树,也称为最优树。

   @:堆:是一种完全二叉树,同时对于任意节点x处的项的关键字大于和等于以x为根节点的子树的所有节点处关键字的值

4>:散列表

    将关键字通过散列函数映射到特定未知,以加快查找的速度。主要运用的是:将顺序存储结构(数组)和链式存储结构(链表)相结合。利用各自优势,形成更加强大的结构。

 

  以上是这两天对于数据结构的总结,下一步具体实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值