数组是最简单、也是使用最普遍的数据结构。数组是能够在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素经过数组下标进行访问,数组下标从0开始。数组
栈是一种特殊的线性表,仅能在线性表的一端操做,栈顶容许操做,栈底不容许操做。 栈的特色是:先进后出,或者说是后进先出,从栈顶放入元素的操做叫入栈,取出元素叫出栈。数据结构
队列与栈同样,也是一种线性表,不一样的是,队列能够在一端添加元素,在另外一端取出元素,也就是:先进先出。从一端放入元素的操做称为入队,取出元素为出队。指针
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是经过链表的指针地址实现,每一个元素包含两个结点,一个是存储元素的数据域 (内存空间),另外一个是指向下一个结点地址的指针域。根据指针的指向,链表能造成不一样的结构,例如单链表,双向链表,循环链表等。对象
散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,经过key和value来映射到集合中的一个位置,这样就能够很快找到集合中的对应元素。队列
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具备层次关系的集合。把它叫作 “树” 是由于它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。在平常的应用中,咱们讨论和用的更多的是树的其中一种结构,就是二叉树。内存
堆是一种比较特殊的数据结构,能够被看作一棵树的数组对象,具备如下的性质: 堆中某个节点的值老是不大于或不小于其父节点的值; 堆老是一棵彻底二叉树。List
图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中经常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具备相邻关系。二叉树