数据结构之总篇

一、数据结构的分类

数据结构分类逻辑结构和存储结构。

逻辑结构

(1)集合:集合中,任意两个数据元素之间都没有逻辑关系,只是属于同一个集合。
(2)线性结构:线性结构中的数据元素存在“一对一”的关系。
(3)树形结构:树结构中的数据元素存在“一对多”的关系。
(4)图形结构:图性结构中的数据元素存在“多对多”的关系。

存储结构

(1)顺序存储:不便于插入删除等操作
(2)连式存储:插入、删除较为灵活,查找速度慢
(3)索引存储:在存储元素的信息的同时需要建立附件的索引表
(4)三列存储:根据元素的关键字通过一个函数直接计算出该元素的存储地址。

二、线性表

顺序表

链式表

单链表
循环列表
双向列表

三、栈和队列

栈和队列的应用

队列

四、数组

五、树和二叉树

二叉树及其种类

每个节点最多含有两个子树的树称为二叉树。

(1)满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
在这里插入图片描述

(2)完全二叉树:特点是每个节点的孩子节点的数量可以是0, 1, 2 个,除此之外它要求每层节点添加,必须是从左到右,不允许跳着添加,图示如下:
在这里插入图片描述

(3)平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
在这里插入图片描述

(4)二叉搜索树:它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树
在这里插入图片描述
(5)红黑树(平衡二叉搜索树)
在这里插入图片描述

(6)哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

参考博客
参考博客2
参考博客3

二叉树的性质

二叉树的存储结构

二叉树的遍历

排序

排序

数组和线性表的区别

数据结构分为逻辑结构和存储结构。
逻辑结构包括:集合,线性结构,树形结构,图状结构
存储结构包括:顺序存储,链式存储,索引存储以及散列存储

线性表是一种最基本,最简单,最常用的数据结构,是由n(n>=0)个类型相同的数据元素组成的有限序列。其逻辑结构是线性结构,存储结构有顺序存储和链式存储两种。

而数组是从物理存贮的角度来说的,数组只是强调了顺序存储。线性表可以用数组存贮也可以用链表来存贮。同样的队列和栈也可以用数组和链表存贮,各有利弊。具体使用时,根据具体情况选择。

所以说,数组是一个更大的概念。使用数组,不但可以存储线性表,也可存储非线性结构的数据结构。比如堆、完全二叉树、乃至于其它类型的树、图等。

总结:
顺序表与数组都是数据结构,只是描述角度不同。顺序表是从逻辑结构的角度来说的,它的每一个元素都只有一个前驱元素和一个后驱元素除了头和尾.而数组是从物理存储的角度来说的,顺序表用数组存储也可以用链表来存储。各有利弊。具体使用时,根据具体情况选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值