常见数据结构

栈、队列、数组、链表、树、哈希表

栈 与 队列

  • 首先我们需要了解【栈】与【列队】的区别,它们的最大区别就是数据进出顺序的问题。


    常见数据结构_第1张图片
    数据结构之栈和队列 - 栈.jpg

    栈的特点就是:【先进后出】,它们的入口与出口都是在同一个位置,如图所示。当A先入栈时,是处在栈顶的,不过随着B的入栈,A被B压到了中间位置,这就叫【压栈】。所以C进栈时,B与A的位置都被向下压了一级。当我们要取出数据时,因为出口与入口是在同一位置,所以先取出来的是C,这叫【弹栈】,因为此时C是在栈顶。当C被取出时,B与A就会向上弹一级,B变成了栈顶,当下次取数据时,B就会被弹出栈,以此类推...

常见数据结构_第2张图片
数据结构之栈和队列 - 队列.jpg

队列的特点:【先进先出】。从以上的示例可以看出“队列”与“栈”的不同,它们的入口与出口是不一样的。就好比举的例子:银行领票排队,当你先进入银行时,领完小票排队,排在你之前的依次进行完成操作,如果操作完毕了也就走出银行了。

数组 与 链表

  • 数组与链表的最大不同:
    数组:查询快,增删慢
    链表:查询慢,增删快
常见数据结构_第3张图片
数据结构数组与链表之 - 数组.jpg
  • 【需求2】与【需求3】是对一组 数组的增加与删除操作。可以看出在数组中增加或删除,是非常繁琐的,所以我们可以得出结论:增删慢是数组的一大缺点
  • 我们可以看出【需求1】,是以上三个操作中最简单的。只需要输入元素的角标,即可快速的查询到该数据。由此我们可以得出:数组的查询是非常快的,这是它的优点
常见数据结构_第4张图片
数据结构之数组和链表 - 链表.jpg

链表,从以上示例可以看出,链表是由多个节点连接组成的。
而节点又是由【数据(数据域)】和【地址(指针域)】组成的,每个节点的地址存储的是下一个节点的内存空间地址。这样做的优点与缺点可以从图中的示例中得出。

  • 链表的缺点:【查询慢】,可以从“示例1”中看出,每次想要得到链表中的一个节点数据,都需要从起始节点一个节点一个节点的查询,所以效率是不高的。并不能像数组那样直接通过一个索引直接获取数据。我们可以得出结论,链表的缺点是:查询慢。
  • 链表的优点:【增删快】,可以从“示例2”和“示例3”清楚的看出来,当我们要添加一个新的数据节点时,只需要把节点所存的空间地址换一下即可,删除也是如此的。
注意:以上所讲的是单链表。其实链表还有别的形式,比如说循环链表,循环链表其实也很简单,看上图示例中,末尾的数据节点地址指向的是null,只需要把null改成起始节点地址空间即可,那么就是循环链表了。还有双向链表,图上的是单链表,因为它的节点是由两个部分组成的,数据与地址,而地址指向下一个节点的内存空间。双链表其实就是节点由三个部分组成,由一个数据,两个地址组成,其中一个地址指向下一个节点的内存空间,另一个地址指向上一个节点的内存空间,这就是双向链表。

你可能感兴趣的:(常见数据结构)