程序设计基础第8章
- 格式:ppt
- 大小:1.19 MB
- 文档页数:47
第八章文件操作一、文件基本概念和文件流类文件基本概念和文件流类从不同的角度来看待文件就可以得到不同的文件分类。
C++根据文件数据的编码方式不同分为文本文件和二进制文件。
根据存取方式不同分为顺序存取文件和随机存取文件所谓“文本文件”和“二进制文件”是从文件格式的角度进行分类,是约定俗成的、从计算机用户角度出发进行的分类。
所谓的“顺序存取文件”和“随机存取文件”是根据访问文件中数据的方式来划分的。
顺序存取文件就是按照文件中数据存储次序进行顺序操作,为访问第i 个数据,就首先要访问第i-1个数据,在整个文件操作过程中,将移动位置指针的工作交给系统自动完成。
磁带文件就是一个典型的顺序存取文件。
随机访问文件是根据应用的需要,通过命令移动位置指针直接定位到文件内需要的位置并进行数据操作。
对文件的基本操作分为读文件和写文件。
所谓“读文件”就是将文件中的数据读入内存之中,也称为“输入”。
所谓“写文件”就是将内存中的数据存入文件之中,也称为“输出”。
C++标准类库中有3个流类可以用于文件操作,这3个类统称为文件流类,分别如下:1)ifstream:用于从文件中读取数据。
2)ofstream:用于向文件中写入数据。
3)fstream:既可用于从文件中读取数据,又可用于向文件中写入数据。
使用这3个流类时,程序中需要包含fstream头文件。
类ifstream和类fstream都是从类istream派生而来的,因此类ifstream拥有类istream的全部成员函数。
同样,类ofstream和类fstream也拥有类ostream的全部成员函数。
这3个类中有一些十分熟悉的成员函数可以使用,如operator<<、operator>>、peek( )、ignore( )、getline( )、get( )等。
在程序中,要使用一个文件,必须包含3个基本步骤:打开(open)文件——操作文件——关闭(close)文件。
何谓查找表?查找表是由同一类型的数据元素(或记录)构成的集合。
由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。
对查找表经常进行的操作:•1)查询某个“特定的”数据元素是否在查找表中;•2)检索某个“特定的”数据元素的各种属性;•3)在查找表中插入一个数据元素;•4)从查找表中删去某个数据元素。
查找表可分为两类:静态查找表仅作查询和检索操作的查找表。
动态查找表有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据关键字是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。
若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。
若此关键字能识别若干记录,则称之谓“次关键字”。
查找根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
若查找表中存在这样一个记录,则称“查找成功”。
查找结果给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”。
查找结果给出“空记录”或“空指针”。
如何进行查找?查找的方法取决于查找表的结构。
由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。
为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。
9.1 静态查找表9.2 动态查找树表9.3 哈希表9.1静态查找表数据对象D :数据关系R :D 是具有相同特性的数据元素的集合。
每个数据元素含有类型相同的关键字,可唯一标识数据元素。
数据元素同属一个集合。
ADT StaticSearchTable {基本操作P:Create(&ST, n);Destroy(&ST); Search(ST, key);Traverse(ST, Visit()); } ADT StaticSearchTable构造一个含n 个数据元素的静态查找表ST 。