栈、队列、数组、链表、树、哈希表
栈 与 队列
-
首先我们需要了解【栈】与【列队】的区别,它们的最大区别就是数据进出顺序的问题。
栈的特点就是:【先进后出】,它们的入口与出口都是在同一个位置,如图所示。当A先入栈时,是处在栈顶的,不过随着B的入栈,A被B压到了中间位置,这就叫【压栈】。所以C进栈时,B与A的位置都被向下压了一级。当我们要取出数据时,因为出口与入口是在同一位置,所以先取出来的是C,这叫【弹栈】,因为此时C是在栈顶。当C被取出时,B与A就会向上弹一级,B变成了栈顶,当下次取数据时,B就会被弹出栈,以此类推...
队列的特点:【先进先出】。从以上的示例可以看出“队列”与“栈”的不同,它们的入口与出口是不一样的。就好比举的例子:银行领票排队,当你先进入银行时,领完小票排队,排在你之前的依次进行完成操作,如果操作完毕了也就走出银行了。
数组 与 链表
- 数组与链表的最大不同:
数组:查询快,增删慢
链表:查询慢,增删快
- 【需求2】与【需求3】是对一组 数组的增加与删除操作。可以看出在数组中增加或删除,是非常繁琐的,所以我们可以得出结论:增删慢是数组的一大缺点
- 我们可以看出【需求1】,是以上三个操作中最简单的。只需要输入元素的角标,即可快速的查询到该数据。由此我们可以得出:数组的查询是非常快的,这是它的优点
链表,从以上示例可以看出,链表是由多个节点连接组成的。
而节点又是由【数据(数据域)】和【地址(指针域)】组成的,每个节点的地址存储的是下一个节点的内存空间地址。这样做的优点与缺点可以从图中的示例中得出。
- 链表的缺点:【查询慢】,可以从“示例1”中看出,每次想要得到链表中的一个节点数据,都需要从起始节点一个节点一个节点的查询,所以效率是不高的。并不能像数组那样直接通过一个索引直接获取数据。我们可以得出结论,链表的缺点是:查询慢。
- 链表的优点:【增删快】,可以从“示例2”和“示例3”清楚的看出来,当我们要添加一个新的数据节点时,只需要把节点所存的空间地址换一下即可,删除也是如此的。