常见数据结构的简单的知识的总结

 
数据结构,先知道以下常用结构基本特点:
1.栈: 先进后出
2.队列: 先进先出
3.数组: 查找快,增删慢
4.链表: 查找慢,增删快
5.红黑树: 快
 
一,栈
栈,stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。
就是说:采用该结构的集合,对元素的存取又如下的特点:
1.先进后出(存进去的元素,要在比它后存进去的元素依次取出之后,才能取出该元素)。类似于子弹夹,
先压进去的子弹在下面,后进去的子弹在上面,开枪时,先弹出上面的子弹,后弹出下面的子弹
2.栈的入口、出口都是栈的顶端位置,同一侧。
两个名词:
1.压栈:又叫入栈,就是存元素,即把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置。
2.弹栈:又叫出栈,就是去元素,即把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置。
 
二,队列
队列:queue,简称 队 ,它同堆栈一样,也是一种受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。
就是说:采用该结构的集合,对元素的存取有以下特点:
1.先进先出(存进去的元素,比那些在它后面存进去的元素先出来)。类似于火车过山洞。
2.队列的入口、出口不在同一侧。
 
三,数组
数组:Array,是有序的元素序列,数组是在内存当中开辟一段连续的空间,并在此空间存放元素。这段空间有首地址,赋值给数组名。
就像是一排房屋数量固定的出租屋,每个房间都有它自己的编号,并且编号连续,通过编号可以快速找到房子里的内容。
就是说:采用该结构的集合,对元素的存取有以下特点:
1.查找元素快:通过索引,可以快速的访问指定位置的元素
2.增删元素慢:**在堆内存中,频繁的创建数组,复制数组中的元素,销毁数组,效率低下。**
⑴指定索引位置增加元素:
①需要创建一个新数组,长度是原数组的长度加上要增加的元素的数量。
②将指定的新元素存储在指定索引的位置,
③再把原数组根据索引,复制到新数组对应索引的位置。
④将新数组的地址赋值给数组名
⑤原数组在内存中被销毁(垃圾回收)
⑵指定索引位置删除元素:
①需要创建一个新数组,长度是原数组的长度减去要删掉的元素的数量;
②将原数组元素根据索引,复制到新数组对应索引位置,原数组中指定索引位置元素(要删除的元素)不复制到新数组中。
③将新数组的地址赋值给数组名
④原数组在内存中被销毁(垃圾回收)
 
 
四、链表
链表:linked list 由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:
一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。我们常说的链表结构有单向链表与双向链表。
单向链表:链表中只有一条链子,不能保证元素的顺序(存储元素和取出元素的顺序可能不一致)
双向链表:链表中有两条链子,有一条链子是专门记录元素的顺序,是一个有序的集合。
这里只说单向链表。
就是说:采用该结构的集合,对元素的存取有以下特点:
1.多个结点之间,通过地址连接。
2.查找元素慢:想查找某个元素,需要通过连接的结点,依次向后查找指定元素。
3.增删元素快:只需要修改连接下个元素的地址即可。
⑴增加元素:
①起始位置增加元素:
ⅰ将该元素的指针域修改为指向原来的第一个元素;
ⅱ将起始位置修改为新增加的元素。
②中间位置增加元素:
ⅰ将该元素的指针域指向要插入的位置的下一个元素;
ⅱ将要插入位置的上一个元素的指针域修改为新增加的元素。
③末尾位置增加元素:
ⅰ将原来的最后一个元素的指针域指向新添加的元素;
⑵删除元素:
①起始位置删除元素:
ⅰ删除原来的第一个元素中指向下一个元素的指针域内容;
ⅱ将起始位置修改为原来的第二个元素。
②中间位置删除元素:
ⅰ将待删除结点的上一个结点的指针域修改为指向待删除结点的下一个结点;
ⅱ删除待删除结点。
③结尾位置删除元素:
ⅰ将待删除结点的上一个结点的指针域的内容修改为空null;
ⅱ删除待删除结点(最后一个结点)。
 
五、红黑树
1.二叉树:binary tree,是每个结点不超过2的有序数(tree)。
二叉树是每个结点最多有两个子树的树结构,顶上的叫根结点,两边称为“左子树”“右子树”。
2.排序树/查找树 在二叉树的基础上,元素是有大小顺序的。左子树小,右子树大。
3.平衡树:在二叉树的基础上,左子树的数量和右子树的数量相等
4.红黑树:在二叉树的基础上,无限接近平衡树。是不平衡树。
约束:①节点可以是红色的或则是黑色的
②根节点是黑色的
③叶子节点(特指空节点)是黑色的
④每个红色节点的子节点都是黑色的
⑤任何一个节点到其每一个叶子节点的所有路径上的黑色节点数相同。
特点:速度特别快,查找叶子元素最少和最多次数不多于二倍。
 
 

posted @ 2021-07-17 16:26  水啾2  阅读(96)  评论(0编辑  收藏  举报