数据结构的一些基本概念

这里写目录标题

数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

逻辑结构就是数据之间的关系。而按数据之间的关系来说,大概可以分为两种:线性结构和非线性结构。

  • 线性结构
    • 有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。例如:线性表,典型的线性表有:顺序表、链表、栈(顺序栈、链栈)和队列(顺序队列、链队列)。它们共同的特点就是数据之间的线性关系,除了头结点和尾结点之外,每个结点都有唯一的前驱和唯一的后继,也就是所谓的一对一的关系。
      数据结构的一些基本概念数据结构的一些基本概念
  • 非线性结构
    • 对应于线性结构,非线性结构也就是每个结点可以有不止一个直接前驱和直接后继。常见的非线性结构包括:集合、树(二叉树)、图(网)等。

什么是存储结构?逻辑结构指的是数据间的关系,而存储结构是逻辑结构的存储映像。通俗的讲,可以将存储结构理解为逻辑结构用计算机语言的实现。常见的存储结构有顺序存储、链式存储、索引存储以及散列存储(哈希表)。

算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。好的算法,应该具有正确性、可读性、健壮性、高效率和低存储量的特征。

函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快于g(n)。

时间复杂度

下面这组数据应该就看得很清楚。当n的值越来越大时,3n+1已经没法和2n2的结果相比较,最终几乎可以忽略不计。也就是说随着n值变得非常大以后,算法G其实已经很趋近于算法I。于是可以得到这样一个结论,判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数
数据结构的一些基本概念数据结构的一些基本概念

栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底( bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出( Last In first out)的线性表,简称LIFo结构。应用如浏览器的前进后退操作,Photoshop的撤销操作。
栈的插入操作,叫作进栈,也称压栈、入栈。类似子弹入弹夹。
栈的删除操作,叫作出栈,也有的叫作弹栈。如同弹夹中的子弹出夹。

队列

队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表