常用数据结构简介
线性表:
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(循环链表除外)。
在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。
链表:
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。单向链表是指:链表的结点只有当前结点的值(value)和下一个结点的指针(或者说是引用)。访问需要从头部开始顺序访问。head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针。双向链表是指:链表的结点有当前结点的值(value)、上一个结点的指针和下一个结点的指针(或者说 是引用)。
链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。
链表存储,顺序访问
数组:
所谓数组,是有序的元素序列。数组是用于储存多个相同类型数据的集合。
数组是在内存中开辟一段连续的空间,并在此空间存放元素。
顺序存储,随机访问
区别:链表的操作性能(插入,删除)高于数组 数组的读取性能(读)高于链表。
栈:
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
先进后出
队列:
队列是一种运算受限的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
先进先出
串:
串(string)是由零个或多个字符组成的有限序列,又名叫字符串。串是一种特殊的线性表,其特殊性体现在( 数据元素的类型是一个字符 )。串的顺序存储有二种方法,分别是( 紧缩格式 ),( 非紧缩格式 )。两个串相等的充分必要条件是( 串的长度相同且对应位置的字符相等 )。空串的长度等于( 0 )。
树:
树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。
图:
图形数据结构主要研究形状和图形数据元素之间的关系,它主要谈论几何形体在计算机内部的表示以及期间进行运算的基本方法。“算法+数据结构=程序”来说明数据结构在程序设计中所占的重要位置。
图形数据结构与一般数据结构不同,它必须要反映数据所对应元素之间的几何关系和拓扑关系。