数据结构是值相互之间存在着一种或多种特定关系元素的集合
大部分数据结构都需要借助指针和结构体类型来实现。
有数组,链表,队列,栈,树,堆,图,散列表等
一:数组
数组是可以实现在内存中连续的储存多个元素的结构,在内存中的分配也是连续的,通过其下标访问,下标从[0]开始。
他的优点是查找起来方便,遍历起来也方便,但他的缺点也很明显,数组的大小不能改变,其次是他的添加和删除比较麻烦,因为需要移动其他的数据。
二:栈
栈是一种特殊的线性表,只能在栈顶进行操作,栈底不允许操作,特点是先进后出,后进先出,放入叫入栈,取出叫出栈。
三:队列
队列和栈比较类似,但他却支持在一段添加,在另一端取出元素。先进先出。
四:链表
链表和数组比较类似,不同的是链表在内存中的储存不是连续的,其元素包括两个节点,一个是用来储存数据的数据域,一个是用来储存指向下个地址的指针域,根据其链表结构的不同,可将其分为单链表,双向链表,循环链表等。
他的优点是可以在创建时再分配内存空间,可以任意添加修改元素,只需改变前后两个节点的指针就可。缺点是查找,遍历起来速度比较慢。
链表有很多人都对其具体操作创建不是很了解,下次我将主要分析链表在平时的一些操作。
五:树
树是由n个有限节点组成的一个具有明显层次的集合,其更像是一个树倒挂起来,从上向下看。他的特点有:
1:每个节点有零个或多个子节点。
2:没有父节点的称为根节点。
3:每一个非根节点尤其只有一个父节点。
4:除了根节点外,其余每个子节点都可以形成多个不相交的子树。
平常用的比较多的是二叉树,他既有数组的好处,也有链表的好处,经常用来处理大批量的动态数据。
六:散列表
散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。
七:堆
堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象,具有以下的性质。
1:堆中的某个节点的值总是不大于或者不小于其父节点。
2:堆总是一颗完全二叉树。
八:图
图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将节点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构。