存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有 顺序存储,链式存储,索引存储,以及散列存储。其中散列所形成的存储结构叫散列表(又叫哈希表),因此哈希表也是一种存储结构。栈只是一种抽象数据类型,是一种逻辑结构,栈逻辑结构对应的顺序存储结构为 顺序栈,对应的链式存储结构为链栈。循环队列是队列的顺序存储结构,链表是线性表的链式存储结构。
http://topic.youkuaiyun.com/t/20010628/19/174696.html
数据:指能够被计算机识别,存储,加工处理的信息载体
数据元素:数据的基本单位,数据元素可以由若干数据项组成
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称
数据结构:指的是数据之间的相互关系,包含三个内容:逻辑结构,存储结构和数据的运算
数据的逻辑结构指数据元素之间的逻辑关系,分两种,线性结构和非线性结构
对于数据结构课程而言,简单地说,线性结构是n个数据元素的有序(次序)集合。
线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。线性表就是一个典型的线性结构
它有四个基本特征:
1.集合中必存在唯一的一个"第一个元素";
2.集合中必存在唯一的一个"最后的元素";
3.除最后元素之外,其它数据元素均有唯一的"后继";
4.除第一元素之外,其它数据元素均有唯一的"前驱"。
数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
如(a1,a2,a3,.....,an),a1为第一个元素,an为最后一个元素,此集合极为一个线性结构的集合。
相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
关于广义表,是一种非线性的数据结构。
常见的非线性结构有:树(二叉树等),图(网等)。
试举一个数据结构的例子?
http://wenku.baidu.com/view/3ef99d18a8114431b90dd8f2
线性表的逻辑结构与存储结构之间的关系。在计算机中如何将线性表的结点存放到存储单元中,有许多方法,最简单的方法就是按顺序存储,就是按线性表的逻辑结构次序依次存放在一组地址连续的存储单元中。在存储单元中的各元素的物理位置和逻辑结构中各结点相邻关系是一致的。线性表的链式存储结构与顺序表不同,链表是用一组任意的存储单元来存放线性表的结点,这组存储单元可以分布在内存中各个位置上。因此链表中的结点的逻辑次序与物理次序不一定相同。
ADT的继承关系
下面的列表显示了常用的ADT(抽象数据类型)以及它们之间的继承关系。次一级的(用缩进表示)项目继承了前一级的项目的数学性质(事实上所有的ADT都是集合的子孙,不过为了ADT实现的方便将其他ADT看作独立的成员)。其中重要的ADT用粗体标志。我力求使这些ADT按照他们的数学性质进行准确的分类,但由于许多ADT同时具有多种其他ADT的性质,而且某一ADT用不同的数据结构来实现也会使其产生特殊的性质,因此分类并不是很准确,同时有些英文术语可能翻译得不准确,请大家批评指正。
注意 该关系是按照ADT的数学性质而不是按其实现方法确定的。
Table of Common ADT
- 集合 set
- 包 bag (多重集合 multi-set)
- 并查集
- 字典 dictionary
- 有序字典 ordered dictionary
- 散列表 hash table
- 映射 map
- 数组 array
- 后缀数组 suffix array
- 排序数组 sorted array
- 分散链结散列表 separate chaining hashing
- 合并链结散列表 coalesced hashing
- 直链散列表 direct chaining hashing
- 数组 array
- 表 list
- 排序表 sorted list
- 链表 linked list
- 单链表 singly linked list
- 邻接表 skip list
- 双链表 doubly linked list (two-way list)
-
栈 stack
- bounded stack
- 队列 queue
- 二端队列 deque (doubly-ended queue)
- pile
- 限制队列 bounded queue
- 二端队列 deque (doubly-ended queue)
-
串 string
- 文本 text
- 矩阵 matrix
- 长方形矩阵 rectangular matrix
- 方阵 square matrix
- 稀疏矩阵 sparse matrix
- 粗糙矩阵 ragged matrix
- 同一矩阵 uniform matrix
- 上三角矩阵 upper triangular matrix
- 下三角矩阵 lower triangular matrix
- 优先队列 priority queue
- 二项式堆 binomial heap
-
二项式队列 binomial queue
- 散列堆 hash heap
- 两端优先队列 double-ended priority queue
- 单调优先队列 monotone priority queue
- Van Emde-Boas 优先队列 Van Emde-Boas priority queue
-
图 graph
- 超图 hypergraph
- 多图 multigraph
- 无向图 undirected graph
- 有向图 directed graph (digraph)
- 树 tree
- 堆 heap
- 弱堆 weak-heap
- shadow heap
- Fibonnaci堆 Fibonnaci heap
- 检索树 trie (digital tree)
- 空间检索树 quad trie
- Patricia 树 Patricia tree
- 三重搜索检索树 ternary search trie
- 后缀树 suffix tree
- 多后缀树 multi suffix tree
- 平衡树 balanced tree
- 完全树 complete tree
- k-ary堆 k-ary heap
- 有序树 ordered tree
- 空间树 quadtree
- 线性空间树 linear quadtree
- 八叉树 octtree (octree)
- 平衡有序树 balanced ordered tree
- 二项式树 binomial tree
- Bk树 Bk tree
- 搜索树 search tree
- (a,b)树 (a,b)-tree
- k-d树 k-d tree
- 二分树 bintree
- 空间k-d树 skd-tree
- 自适应k-d树 adaptive k-d tree
- 平衡自适应k-d树 k-d-B-tree
- 平衡搜索树 balanced search tree
- 2-3 树 2-3 tree
- 红黑树 red-black tree
- B-树 B-tree
- B+-树 B+-tree
- B*-树 B*-tree
- BV-树 BV-tree
- 2-3-4 树 2-3-4 tree
- 平衡多向树 balanced multiway tree
- 二叉树 binary tree
- BD树 BD-tree
- GBD-tree
- 二叉空间分割树 BSP-tree (Binary Space Partitioning tree)
- 完全二叉树 complete binary tree
- 二叉堆 binary heap
-
平衡二叉树 balanced binary tree
-
AVL树 AVL tree
-
- BD树 BD-tree
-
二叉搜索树 binary search tree
- 倾斜树 splay tree
-
随机二叉搜索树 randomized binary search tree (RBST)
- 平衡二叉搜索树 balanced binary search tree
- 离散间隔编码树 diet=discrete interval encoding tree
- 高度平衡二叉搜索树 height-balanced binary search tree
- 平衡二叉搜索树 balanced binary search tree
- 红黑树 red-black tree
- 空间树 quadtree
- 堆 heap