数据结构学习笔记:基本知识
来源:互联网 发布:淘宝封店七天怎么办 编辑:程序博客网 时间:2024/06/11 09:49
数据结构:
包含三方面的内容,数据的逻辑结构、数据的存储结构和数据的运算。三者是一个整体,
(1)同一个逻辑结构可以有不同的存储结构。
线性表,若是采用顺序方式存储,则是顺序表;若是采用链式方式存储,则是链表;若是采用散列方式存储,则是散列表。
(2)同一逻辑结构也可以有不同的数据运算集合。
表,若是将插入限制在一端,而删除限制在另一端,则是队列;若是插入和删除限制在同一端,则是栈。
数据结构分类:
(1) 线性结构:非空集;有且仅有一个开始结点和一个终止结点;所有结点都最多只有一个直接前趋结点和一个直接后继结点。例如:线性表,栈,队列,串。
(2) 非线性结构:非空集;一个结点可能有多个直接前趋结点(Immediate Predecessor)和直接后继结点(Immediate Successor)。例如:数组,广义表,树结构,图结构。
存储方式:
(1)顺序存储方式,一块连续的存储区域一个接一个地存放数据。顺序存储方式在逻辑上相邻的结点存储在物理位置上相邻的存储单元里面,结点间的逻辑关系由存储单元的邻接关系来体现。顺序存储结构(Sequential Storage Structure),用数组或者结构数组来表示。
(2)链接存储方式,不要求逻辑上相邻的结点在物理位置上相邻,结点间的逻辑关系由附加的指针字段表示。一个结点的指针字段往往指向想一个结点的存放位置。链式存储结构(Linked Storage Structure),一般在原来数据项中增加指针类型来表示结点间的关系。
(3)索引存储方式,采用附加的索引表的方式来存储结点信息。索引表由若干索引项组成。一般形式为: (关键字.地址)
稠密索引,每个结点都有索引项,索引项的地址指示结点所在的存储位置。
稀疏索引,一组结点对应一个索引项,其中索引项地址指示一组结点的起始存储位置。
(4)散列存储方式,根据结点关键字直接计算出该结点的存储地址的一种存储方式。
常用数据结构:
(1)数组(Array)
(2)栈(Stack)
栈,线性表,只能在一个表的一个固定端点进行数据结点的插入和删除操作。栈,按照后进先出的原则来存储数据,即,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。没有数据时,称为空栈。
(3)队列(Queue)
线性表,只允许在表的一段进行插入操作,而在另一端进行删除操作。进入插入操作的一端称为队尾,进行删除的一端称为对头。没有数据时,称为空队列。
(4)链表(Linked List)
链表由一序列数据结点构成,每个数据结点包括数据域和指针域两部分。指针域保存了下一个元素存放的地址。
(5)树(Tree)
非线性结构,包括n个结点的有穷集合K。有且仅有一个根节点,该结点没有前驱结点。其他结点有且仅有一个前驱结点,可以有m个后继结点,m>=0.
(6)图(Graph)
非线性结构,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系。
(7)堆(Heap)
堆,一般都是二叉堆。堆的特点是根结点的值是所有结点中最小或者最大的,并且根结点的两个子树也是一个堆结构。
(8)散列表(Hash)
散列表源自散列函数(Hashfunction),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就不用比较而直接取得所查记录。
- 数据结构学习笔记:基本知识
- 数据结构学习笔记:基本知识(二)
- 《数据结构与算法》学习笔记1 java数据结构基本知识
- WPF学习笔记--基本知识
- 学习笔记:图像基本知识
- RPG学习笔记(基本知识了解)
- tcl/tk学习笔记:基本知识
- CSS学习笔记(基本知识)
- Java学习笔记【多线程基本知识】
- 机器学习笔记(1)---基本知识
- Airflow学习笔记 --- 基本知识储备
- 数据结构基本知识
- 数据结构基本知识
- Guice学习笔记(二) 常用基本知识
- JavaScript学习笔记1——基本知识
- 编解码学习笔记一:基本知识
- Lua学习笔记(1)--基本知识介绍
- ARM 学习笔记(一)基本知识
- 程序员应该懂得问题
- bzoj1653 [Usaco2006 Feb]Backward Digit Sums
- ubuntu设置默认为命令行启动
- UVa10115_Automatic Editing csdn(小白书字符串专题)
- java线程怎样实现并发?从问题说开去。。。
- 数据结构学习笔记:基本知识
- OpenCV学习笔记【7】:写入AVI视频文件
- arm汇编 , 指令详解
- copy 和assignment函数
- 慕司前言
- 编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。
- ListVIew点击事件失效
- Cgroup 学习
- LA 6448 Credit Card Payment