常见的8中数据结构

本文介绍了数据结构的基本类型,包括线性结构如数组、栈、队列和链表,以及非线性结构如树、图、堆和散列表。线性结构中,数组适用于查询频繁且较少修改的情况,而栈和队列分别用于递归和多线程管理。链表则适合频繁的增删操作。非线性结构中,树和图提供更复杂的逻辑结构,堆常用于优先级队列,散列表则提供快速的查找。这些数据结构在不同的应用场景中发挥着重要作用。
摘要由CSDN通过智能技术生成

数据结构:线性结构:数组(Aray),栈(stack),队列(Queue),链表(Linked List)

                  非线性结构:树(Tree),图(Graph),堆(Heap),散列表(Hash)

数据结构大多是冲淡种分类方式分类:逻辑结构,物理结构,存储结构。

1.数组 (Array)

        int[] array=new int[100];    

        优点:按照索引查询,遍历更加快捷方便

        缺点:大小固定,只能存活粗一种类型的数据,添加删除操作缓慢。

        应用于:多次查询,对存储空间要求不大,很少出现增加与删除的情况。

        ArrayList  array=new ArrayList();

                array.Add(),

                array.Remove();

        List<int> array1=new List<int>;

                array1.Add();

                array1.Remove();

        //ArrayList和List属于动态数组,可以随时的添加以及删除元素。

        注意:ArrayList存储的数据是Object类型,会涉及到装箱以及拆箱的操作。比较消耗性能。并且存储的数据可能是不安全的类型。

2.栈(Stack)

        特点:先进后出,放入元素为进栈,取出元素为出栈。

        应用于:需要进行递归的操作。

3.队列(Queue)

        特点:先进先出:放入元素为入队,取出元素为出队。

        应用于:多线程阻塞队列管理中心。

4.链表(Linked List)

        物理存储单元上非连续的,非顺序的存储结构。数据元素的逻辑顺序是通过链表的指针地址实现的。每一个元素有数据域和指针域。根据指针指向分为:单链表,双链表,循环链表。

        优点:不需要初始化容量,可以任意的加减元素。加减元素的时候只需要改变前后两个元素的指针域的指向即可。

        缺点:占用空间,查询遍历的操作耗时。

        应用于:数据量小,需要频繁的加减操作的场景。        

5.树(Tree):根朝上,叶朝下。

        1.每一个结点有0或者多个子节点 

        2.没有父结点的结点叫做根节点。

        3.每一个非根节点只有一个根节点。

        4.处理根节点,每一个子节点可以分为多个不相交的子树。

二叉树:树的一种特殊结构。

        1.每一个结点最多有两个子节点。

        2.左子树,右子树是有顺序的,不可颠倒。

        3.即使是只有一个子节点,也要区分左右子树。

        优点:二叉树继承了数组和链表的优势

        应用于:处理大量的动态的数据的时候后适用。

        拓展:二叉树又有平衡二叉树,红黑树,B+树等等。

6.图(Graph)

        由结点的有穷集合V和边的集合E组成。按照顶点指向的方向可分为无向图以及有向图。

        特点:在存储数据上有着较为复杂和高效的算法。

        临近矩阵:邻接表,十字链表,邻接多重表,边集数组等存储结构。

7.堆(Heap):可以看做是完全二叉树

        1.堆中的某个节点的值总是不大于或者不小于父结点的值。

        2.堆是完全二叉树。

        3.根节点值最大的堆叫做大顶堆,反之称之为小顶堆。

               ki>k2i,ki>k(2i+1)                    ki<k2i,ki<k(2i+1)

8.散列表【哈希表】(Hash)

        根据关键码和值(key,value)进行访问。通过key,value映射到集合的某一个位置。

        记录的存储 位置==f(key),f 为散列函数【哈希函数】。通过散列函数将key通过算法转成一个整形数字,然后该数字对数组的长度进行取余,取余的结果当作数组的下标,将value存储到以该数字为下标的数组空间里。

        优点:查找元素很快

        缺点:增加删除元素的操作很慢。

        拉链法:数组+链表(后改为数组+红黑树)。数组的每一个成员包含一个指针,指针指向一个链表的表头。指向的链表可能为空,也可能有很多链结点。

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值