本章主要介绍了如下一些基本概念:
数据结构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中
的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
数据:数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物
及其活动所做的描述。在计算机科学中,数据的含义非常广泛,我们把一切能够输入到计算机中并被计算机程序处理的信息,包括文字、表格、图象等,都称为数据。 结点:结点也叫数据元素,它是组成数据的基本单位。
逻辑结构:结点和结点之间的逻辑关系称为数据的逻辑结构。
存储结构:数据在计算机中的存储表示称为数据的存储结构。
数据处理:数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简
单计算等的操作过程。
数据类型:数据类型是指程序设计语言中各变量可取的数据种类。数据类型是高级
程序设计语言中的一个基本概念,它和数据结构的概念密切相关。
本章主要介绍了如下一些基本概念:
线性表:一个线性表是n≥0个数据元素a0,a1,a2,…,an-1的有限序列。
线性表的顺序存储结构:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。
线性表的链式存储结构:线性表的链式存储结构就是用一组任意的存储单元——结点(可以是不连续的)存储线性表的数据元素。表中每一个数据元素,都由存放数据元素值的数据域和存放直接前驱或直接后继结点的地址(指针)的指针域组成。
循环链表:循环链表(Circular Linked List)是将单链表的表中最后一个结点指针指向链表的表头结点,整个链表形成一个环,从表中任一结点出发都可找到表中其他的结
循环链表:循环链表(Circular Linked List)是将单链表的表中最后一个结点指针指向链表的表头结点,整个链表形成一个环,从表中任一结点出发都可找到表中其他的结点。
双向链表:双向链表中,在每一个结点除了数据域外,还包含两个指针域,一个指针(next)指向该结点的后继结点,另一个指针(prior)指向它的前驱结点。
除上述基本概念以外,学生还应该了解:线性表的基本操作(初始化、插入、删除、存取、复制、合并)、顺序存储结构的表示、线性表的链式存储结构的表示、一元多项式Pn(x),掌握顺序存储结构(初始化、插入操作、删除操作)、单链表(单链表的初始化、单链表的插入、单链表的删除)。
本章主要介绍了如下一些基本概念:
栈:是一种只允许在一端进行插入和删除的线性表,它是一种操作受限的线性表。在表中只允许进行插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈顶元素总是最后入栈的,因而是最先出栈;栈底元素总是最先入栈的,因而也是最后出栈。因此,栈也被称为“后进先出”的线性表。
栈的顺序存储结构:利用一组地址连续的存储单元依次存放自栈底到栈顶的各个数据元素,称为栈的顺序存储结构。
双向栈:使两个栈共享一维数组stack[MAXNUM],利用栈的“栈底位置不变,栈顶位置动态变化”的特性,将两个栈底分别设为-1和MAXNUM,而它们的栈顶都往中间方向延伸的栈称为双向栈。
栈的链式存储结构:栈的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储栈中的数据元素,这种结构的栈简称为链栈。在一个链栈中,栈底就是链表的最后一个结点,而栈顶总是链表的第一个结点。
队列:队列(queue)是一种只允许在一端进行插入,而在另一端进行删除的线性表,它是一种操作受限的线性表。在表中只允许进行插入的一端称为队尾(rear),只允许进行删除的一端称为队头(front)。队头元素总是最先进队列的,也总是最先出队列;队尾元素总是最后进队列,因而也是最后出队列。因此,队列也被称为“先进先出”表。
队列的顺序存储结构:利用一组地址连续的存储单元依次存放队列中的数据元素,称为队列的顺序存储结构。
队列的链式存储结构:队列的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储队列中的数据元素,这种结构的队列称为链队列。在一个链队列中需设定两个指针(头指针和尾指针)分别指向队列的头和尾。
除上述基本概念以外,学生还应该了解:栈的基本操作(初始化、栈的非空判断、入栈、出栈、取栈元素、置栈空操作)、栈的顺序存储结构的表示、栈的链式存储结构的表示、队列的基本操作(初始化、队列非空判断、入队列、出队列、取队头元素、求队列长度)、队列的顺序存储结构、队列的链式存储结构,掌握顺序栈(入栈操作、出栈操作)、链栈(入栈操作、出栈操作)、顺序队列(入队列操作、出队列操作)、链队列(入队列操作、出队列操作)。
本章小结
本章主要介绍了如下一些基本概念:
串:串(或字符串)(String)是由零个或多个字符组成的有限序列。
主串和子串:一个串的任意个连续的字符组成的子序列称为该串的子串,包含该子串的串称为主串。
串的静态存储结构:类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列的存储方式称为串的顺序存储结构。
堆存储结构:用一组空间足够大的、地址连续的存储单元存放串值字符序列,但其存储空间在程序执行过程中能动态分配的存储方式称为堆存储结构。
串的链式存储结构:类似于线性表的链式存储结构,采用链表方式存储串值字符序列的存储方式称为串的顺序存储结构。
串名的存储映象:串名的存储映象就是建立串名和串值之间的对应关系的一个符号表。 除上述基本概念以外,学生还应该了解串的基本运算(字符串拷贝(赋值、字符串的联接、求字符串的长度、子串的查询、字符串的比较)、串的静态存储结构的表示、串的链式存储结构的表示、串的堆存储结构的表示,能在各种存储结构方式中求字符串的长度、能在各种存储结构方式中利用C语言提供的串函数进行操作。
本章小结
1.多维数组在计算机中有两种存放形式:行优先和列优先。
2.行优先规则是左边下标变化最慢,右边下标变化最快,右边下标变化一遍,与之相邻的左边下标才变化一次。
3.列优先规则是右边下标变化最慢,左边下标变化最快,左边下标变化一遍,与之相邻的右边下标才变化一次。
4.对称矩阵关于主对角线对称。为节省存储单元,可以进行压缩存储,对角线以上的元素和对角线以下的元素可以共用存储单元,故nn的对称矩阵只需 个存储单元即可。
5.三角矩阵有上三角矩阵和下三角矩阵之分,为节省内存单元,可以采用压缩存储,nn的三角矩阵进行压缩存储时,只需+1个存储单元即可。
6.稀疏矩阵的非零元排列无任何规律,为节省内存单元,进行压缩存储时,可以采用三元组表示方法,即存储非零元素的行号、列号和值。若干个非零元有若干个三元组,若干个三元组称为三元组表。
7.广义表为线性表的推广,里面的元素可以为原子,也可以为子表,故广义表的存储采用动态链表较方便。
树 树的定义、树的基本运算
树的分层定义是递归的
树中结点个数与高度的关系
二叉树 二叉树定义、基本运算
二叉树性质
二叉树结点个数与高度的关系
不同二叉树棵数
完全二叉树的顺序存储
完全二叉树的双亲、子女和兄弟的位置
二叉树的前序 · 中序 · 后序 · 层次遍历
前序 · 中序 · 后序的线索化二叉树中前驱与后继的查找方法
应用二叉树遍历的递归算法
霍夫曼树
霍夫曼树的构造方法
霍夫曼编码
带权路径长度的计算
树的存储
树的广义表表示与双亲表示
树与二叉树的对应关系
树的先根 · 后根 · 层次遍历
堆 堆的定义、堆的插入与删除
形成堆时用到的向下调整算法
形成堆时比较次数的上界估计
堆插入时用到的向上调整算法
堆的插入与删除算法
图是一种复杂的非线性结构,具有广泛的应用背景。本章涉及到的基本概念有:
图:由两个集合V和E组成,记为G=(V,E),其中v是顶点的有穷非空集合,E是V中顶点偶对(称为边)的有穷集。通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G)可以是空集,若E(G)为空,则图G只有顶点而没有边,称为空图。
有向图(Digraph):若图G中的每条边都是有方向的,则称G为有向图。
无向图(Undigraph):若图G中的每条边都是没有方向的,则称G为无向图。
无向完全图(Undirected Complete Graph):恰好有n(n-1)/2条边的无向图称为无向完全图。 有向完全图(Directed Complete Graph):恰有n(n-1)条边的有向图称为有向完全图。 邻接点(Adjacent):若(vi,vj)是一条无向边,则称顶点vi和vj互为邻接点。
度(Degree):无向图中顶点v的度是关联于该顶点的边的数目。
人度(1ndegree)若G为有向图,则把以顶点v为终点的边的数目,称为v的人度,记为ID(v)。 出度(outdegree):把以顶点v为始点的边的数目,称为v的出度,记为OD(v)。
子图(Subgraph):设G=(V,E)是一个图,若v′是v的子集,E′是E的子集,且E′中的边所关联的顶点均在v′中,则G′=(V′,E′)也是一个图,并称其为G的子图。 路径(Path):在无向图G中,若存在一个顶点序列vp,vi1,vi2…,vin,vq,使得(vp,vil),(vi1,vi2),…,(vin,vq)均属于E(G),则称顶点vp到vq存在一条路径。
路径长度:该路径上边的数目。
简单路径:若一条路径上除了vp和vq可以相同外,其余顶点均不相同,则称此路径为一条简单路径。
简单回路或简单环(Cycle):起点和终点相同(vp=vq)的简单路径称为简单回路或简单环。 有根图:在一个有向图中,若存在一个顶点v,从该顶点有路径可以到达图中其它所有顶点,则称此有向图为有根图,v称作图的根。
连通:在无向图G中,若从顶点vi到顶点vj有路径(当然从vj到vi也一定有路径),则称vi和vj是连通的。
连通图(Connected Graph):若V(G)中任意两个不同的顶点vi和vj都连通(即有路径),则称G为连通图。
连通分量(connected Component):无向图G的极大连通子图称为G的连通分量。
强连通图:在有向图G中,若对于V(G)中任意两个不同的顶点vi和vj,都存在从vi到vj以及从vj到vi的路径,则称G是强连通图。
强连通分量:有向图G的极大强连通子图称为G的强连通分量。
网络(Network):若将图的每条边都赋上一个权,则称这种带权图为网络。
生成树(Spanning Tree):连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树。
最小生成树(Minimun Spanning Tree):权最小的生成树称为G的最小生成树。
本章在介绍图的基本概念的基础上,还介绍了图的两种常用的存储结构,对图的遍历、最小生成树等问题做了较详细的讨论,给出了相应的求解算法,有的算法采用自顶向下、逐步求精的方法加以介绍,也许能便于读者理解它们。
相对而言之,图这一章内容较难,尤其是离散数学基础较差的读者,也许难度更大些。建议读者知难而进,理解本章所介绍的算法实质,掌握图的有关术语和存储表示。面对实际问题时,学会引用本章的有关内容。
8.1 顺序查找
8.2 折半查找
8.3 分块查找
8.4 哈希法
8.5 实训
9.1 插入排序
9.2 希尔排序
9.3 选择排序
9.4 堆排序
9.5 快速排序
9.6 归并排序
9.7 基数排序
9.8 外部排序
9.9 各种排序方法的比较
9.10实训
本章主要介绍了如下一些基本概念:
数据项:数据项是文件中可使用的不可分的最小数据单位。一个数据项由若干个字符或数字组成,它代表某一事物的一种属性。数据项又称为数据域。
记录:记录是由一个或多个数据项根据一定的目的而组成的数据项集合
文件:文件是大量性质相同的记录组成的集合。
关键字:是能够区别文件中各记录的域。通常,把能唯一标识一个记录的关键字称为主关键字;而那些不能唯一标识一个记录的关键字称为次关键字;由两个以上关键字组成的关键字称为复合关键字。
文件的主要操作有:插入、删除、修改、检索等。
文件的物理结构是指文件在外存上的组织形式。按照文件的检索方式和物理结构,文件分为顺序文件、索引文件、索引顺序文件、直接存取文件、链接文件和多重链表文件、倒排文件。按所存放的外存设备,文件又可以分为磁带文件和磁盘文件等几类。
本章主要介绍了如下一些基本概念:
数据结构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中
的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
数据:数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物
及其活动所做的描述。在计算机科学中,数据的含义非常广泛,我们把一切能够输入到计算机中并被计算机程序处理的信息,包括文字、表格、图象等,都称为数据。 结点:结点也叫数据元素,它是组成数据的基本单位。
逻辑结构:结点和结点之间的逻辑关系称为数据的逻辑结构。
存储结构:数据在计算机中的存储表示称为数据的存储结构。
数据处理:数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简
单计算等的操作过程。
数据类型:数据类型是指程序设计语言中各变量可取的数据种类。数据类型是高级
程序设计语言中的一个基本概念,它和数据结构的概念密切相关。
本章主要介绍了如下一些基本概念:
线性表:一个线性表是n≥0个数据元素a0,a1,a2,…,an-1的有限序列。
线性表的顺序存储结构:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。
线性表的链式存储结构:线性表的链式存储结构就是用一组任意的存储单元——结点(可以是不连续的)存储线性表的数据元素。表中每一个数据元素,都由存放数据元素值的数据域和存放直接前驱或直接后继结点的地址(指针)的指针域组成。
循环链表:循环链表(Circular Linked List)是将单链表的表中最后一个结点指针指向链表的表头结点,整个链表形成一个环,从表中任一结点出发都可找到表中其他的结
循环链表:循环链表(Circular Linked List)是将单链表的表中最后一个结点指针指向链表的表头结点,整个链表形成一个环,从表中任一结点出发都可找到表中其他的结点。
双向链表:双向链表中,在每一个结点除了数据域外,还包含两个指针域,一个指针(next)指向该结点的后继结点,另一个指针(prior)指向它的前驱结点。
除上述基本概念以外,学生还应该了解:线性表的基本操作(初始化、插入、删除、存取、复制、合并)、顺序存储结构的表示、线性表的链式存储结构的表示、一元多项式Pn(x),掌握顺序存储结构(初始化、插入操作、删除操作)、单链表(单链表的初始化、单链表的插入、单链表的删除)。
本章主要介绍了如下一些基本概念:
栈:是一种只允许在一端进行插入和删除的线性表,它是一种操作受限的线性表。在表中只允许进行插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈顶元素总是最后入栈的,因而是最先出栈;栈底元素总是最先入栈的,因而也是最后出栈。因此,栈也被称为“后进先出”的线性表。
栈的顺序存储结构:利用一组地址连续的存储单元依次存放自栈底到栈顶的各个数据元素,称为栈的顺序存储结构。
双向栈:使两个栈共享一维数组stack[MAXNUM],利用栈的“栈底位置不变,栈顶位置动态变化”的特性,将两个栈底分别设为-1和MAXNUM,而它们的栈顶都往中间方向延伸的栈称为双向栈。
栈的链式存储结构:栈的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储栈中的数据元素,这种结构的栈简称为链栈。在一个链栈中,栈底就是链表的最后一个结点,而栈顶总是链表的第一个结点。
队列:队列(queue)是一种只允许在一端进行插入,而在另一端进行删除的线性表,它是一种操作受限的线性表。在表中只允许进行插入的一端称为队尾(rear),只允许进行删除的一端称为队头(front)。队头元素总是最先进队列的,也总是最先出队列;队尾元素总是最后进队列,因而也是最后出队列。因此,队列也被称为“先进先出”表。
队列的顺序存储结构:利用一组地址连续的存储单元依次存放队列中的数据元素,称为队列的顺序存储结构。
队列的链式存储结构:队列的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储队列中的数据元素,这种结构的队列称为链队列。在一个链队列中需设定两个指针(头指针和尾指针)分别指向队列的头和尾。
除上述基本概念以外,学生还应该了解:栈的基本操作(初始化、栈的非空判断、入栈、出栈、取栈元素、置栈空操作)、栈的顺序存储结构的表示、栈的链式存储结构的表示、队列的基本操作(初始化、队列非空判断、入队列、出队列、取队头元素、求队列长度)、队列的顺序存储结构、队列的链式存储结构,掌握顺序栈(入栈操作、出栈操作)、链栈(入栈操作、出栈操作)、顺序队列(入队列操作、出队列操作)、链队列(入队列操作、出队列操作)。
本章小结
本章主要介绍了如下一些基本概念:
串:串(或字符串)(String)是由零个或多个字符组成的有限序列。
主串和子串:一个串的任意个连续的字符组成的子序列称为该串的子串,包含该子串的串称为主串。
串的静态存储结构:类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列的存储方式称为串的顺序存储结构。
堆存储结构:用一组空间足够大的、地址连续的存储单元存放串值字符序列,但其存储空间在程序执行过程中能动态分配的存储方式称为堆存储结构。
串的链式存储结构:类似于线性表的链式存储结构,采用链表方式存储串值字符序列的存储方式称为串的顺序存储结构。
串名的存储映象:串名的存储映象就是建立串名和串值之间的对应关系的一个符号表。 除上述基本概念以外,学生还应该了解串的基本运算(字符串拷贝(赋值、字符串的联接、求字符串的长度、子串的查询、字符串的比较)、串的静态存储结构的表示、串的链式存储结构的表示、串的堆存储结构的表示,能在各种存储结构方式中求字符串的长度、能在各种存储结构方式中利用C语言提供的串函数进行操作。
本章小结
1.多维数组在计算机中有两种存放形式:行优先和列优先。
2.行优先规则是左边下标变化最慢,右边下标变化最快,右边下标变化一遍,与之相邻的左边下标才变化一次。
3.列优先规则是右边下标变化最慢,左边下标变化最快,左边下标变化一遍,与之相邻的右边下标才变化一次。
4.对称矩阵关于主对角线对称。为节省存储单元,可以进行压缩存储,对角线以上的元素和对角线以下的元素可以共用存储单元,故nn的对称矩阵只需 个存储单元即可。
5.三角矩阵有上三角矩阵和下三角矩阵之分,为节省内存单元,可以采用压缩存储,nn的三角矩阵进行压缩存储时,只需+1个存储单元即可。
6.稀疏矩阵的非零元排列无任何规律,为节省内存单元,进行压缩存储时,可以采用三元组表示方法,即存储非零元素的行号、列号和值。若干个非零元有若干个三元组,若干个三元组称为三元组表。
7.广义表为线性表的推广,里面的元素可以为原子,也可以为子表,故广义表的存储采用动态链表较方便。
树 树的定义、树的基本运算
树的分层定义是递归的
树中结点个数与高度的关系
二叉树 二叉树定义、基本运算
二叉树性质
二叉树结点个数与高度的关系
不同二叉树棵数
完全二叉树的顺序存储
完全二叉树的双亲、子女和兄弟的位置
二叉树的前序 · 中序 · 后序 · 层次遍历
前序 · 中序 · 后序的线索化二叉树中前驱与后继的查找方法
应用二叉树遍历的递归算法
霍夫曼树
霍夫曼树的构造方法
霍夫曼编码
带权路径长度的计算
树的存储
树的广义表表示与双亲表示
树与二叉树的对应关系
树的先根 · 后根 · 层次遍历
堆 堆的定义、堆的插入与删除
形成堆时用到的向下调整算法
形成堆时比较次数的上界估计
堆插入时用到的向上调整算法
堆的插入与删除算法
图是一种复杂的非线性结构,具有广泛的应用背景。本章涉及到的基本概念有:
图:由两个集合V和E组成,记为G=(V,E),其中v是顶点的有穷非空集合,E是V中顶点偶对(称为边)的有穷集。通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G)可以是空集,若E(G)为空,则图G只有顶点而没有边,称为空图。
有向图(Digraph):若图G中的每条边都是有方向的,则称G为有向图。
无向图(Undigraph):若图G中的每条边都是没有方向的,则称G为无向图。
无向完全图(Undirected Complete Graph):恰好有n(n-1)/2条边的无向图称为无向完全图。 有向完全图(Directed Complete Graph):恰有n(n-1)条边的有向图称为有向完全图。 邻接点(Adjacent):若(vi,vj)是一条无向边,则称顶点vi和vj互为邻接点。
度(Degree):无向图中顶点v的度是关联于该顶点的边的数目。
人度(1ndegree)若G为有向图,则把以顶点v为终点的边的数目,称为v的人度,记为ID(v)。 出度(outdegree):把以顶点v为始点的边的数目,称为v的出度,记为OD(v)。
子图(Subgraph):设G=(V,E)是一个图,若v′是v的子集,E′是E的子集,且E′中的边所关联的顶点均在v′中,则G′=(V′,E′)也是一个图,并称其为G的子图。 路径(Path):在无向图G中,若存在一个顶点序列vp,vi1,vi2…,vin,vq,使得(vp,vil),(vi1,vi2),…,(vin,vq)均属于E(G),则称顶点vp到vq存在一条路径。
路径长度:该路径上边的数目。
简单路径:若一条路径上除了vp和vq可以相同外,其余顶点均不相同,则称此路径为一条简单路径。
简单回路或简单环(Cycle):起点和终点相同(vp=vq)的简单路径称为简单回路或简单环。 有根图:在一个有向图中,若存在一个顶点v,从该顶点有路径可以到达图中其它所有顶点,则称此有向图为有根图,v称作图的根。
连通:在无向图G中,若从顶点vi到顶点vj有路径(当然从vj到vi也一定有路径),则称vi和vj是连通的。
连通图(Connected Graph):若V(G)中任意两个不同的顶点vi和vj都连通(即有路径),则称G为连通图。
连通分量(connected Component):无向图G的极大连通子图称为G的连通分量。
强连通图:在有向图G中,若对于V(G)中任意两个不同的顶点vi和vj,都存在从vi到vj以及从vj到vi的路径,则称G是强连通图。
强连通分量:有向图G的极大强连通子图称为G的强连通分量。
网络(Network):若将图的每条边都赋上一个权,则称这种带权图为网络。
生成树(Spanning Tree):连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树。
最小生成树(Minimun Spanning Tree):权最小的生成树称为G的最小生成树。
本章在介绍图的基本概念的基础上,还介绍了图的两种常用的存储结构,对图的遍历、最小生成树等问题做了较详细的讨论,给出了相应的求解算法,有的算法采用自顶向下、逐步求精的方法加以介绍,也许能便于读者理解它们。
相对而言之,图这一章内容较难,尤其是离散数学基础较差的读者,也许难度更大些。建议读者知难而进,理解本章所介绍的算法实质,掌握图的有关术语和存储表示。面对实际问题时,学会引用本章的有关内容。
8.1 顺序查找
8.2 折半查找
8.3 分块查找
8.4 哈希法
8.5 实训
9.1 插入排序
9.2 希尔排序
9.3 选择排序
9.4 堆排序
9.5 快速排序
9.6 归并排序
9.7 基数排序
9.8 外部排序
9.9 各种排序方法的比较
9.10实训
本章主要介绍了如下一些基本概念:
数据项:数据项是文件中可使用的不可分的最小数据单位。一个数据项由若干个字符或数字组成,它代表某一事物的一种属性。数据项又称为数据域。
记录:记录是由一个或多个数据项根据一定的目的而组成的数据项集合
文件:文件是大量性质相同的记录组成的集合。
关键字:是能够区别文件中各记录的域。通常,把能唯一标识一个记录的关键字称为主关键字;而那些不能唯一标识一个记录的关键字称为次关键字;由两个以上关键字组成的关键字称为复合关键字。
文件的主要操作有:插入、删除、修改、检索等。
文件的物理结构是指文件在外存上的组织形式。按照文件的检索方式和物理结构,文件分为顺序文件、索引文件、索引顺序文件、直接存取文件、链接文件和多重链表文件、倒排文件。按所存放的外存设备,文件又可以分为磁带文件和磁盘文件等几类。