新浪博客

数据结构的概念

2011-09-01 22:18阅读:
1.数据是信息的载体,是描述客观的事物的数、字符、以及所有能够输入到计算机中并被计算机程序识别和处理的符号的集合。
2.数据分为两类:1.数值型数据 (包括整数、浮点数等,主要用于工程和科学计算、以及商业事务处理)
2.非数值型数据(主要包括字符和字符串以及文字、图形、图像、语音等数据)
3.数据的基本单位是数据元素,一个数据元素可由若干个数据项组成,它是一个数据整体中相对独立的单位。
4.数据元素中的数据项可以分为两种:1.初等项(数据处理时不能分割的最小单位)2.组合项
5.数据结构由某个数据元素的集合和该集合的数据元素之间的关系组成。
6.根据对线性结构中数据元素存储的方法不同可以分为1.直接存储2.顺序存储3.字典结构(线性结构中每个元素有且只有一个前驱和一个后缀,但是第一个元素没有前驱,后一个元素没有后缀)
7.非线性结构可以分为层次结构和群结构。
8.树形结构就是层次结构的一个例子:树中的元素叫做节点。若树不为空,它有一个叫做跟的节点其他的节点都是由它派生出来的。
9.群结构中的所有元素之间无顺序关系。
10.解决某一问题而选择数据结构应当执行以下几个步骤:(实际上贯彻一种以数据为中心的设计观点)
(1)分析问题,确定算法遇到的资源限制(内外存空间限制和执行时间限制)。
(2)确定必须支持的基本运算,度量每个运算所受到的资源限制。基本运算包括向数据结构插入一个新数据项,从数据结构中删除一个数据项和搜索指定的数据项。
(3)选择最接近这些资源开销的数据结构。
11.数据结构的核心是分解与抽象。
12.数据结构存储结构可以用以下4种存储方法:
(1)顺序存储方法(2)连接存储方法(3)索引存储方法(4)散列存储方法
13.线性表数据类型有两种传统的实现方式:基于数据的顺序表示和基于链表的连接表示。
14.面向对象=对象+类+继承+消息通信
15.基类又称父类、超类、泛化类,派生类又称为子类或者特化类。
1
6.对类的成员规定有三级存储:公共、私有、保护。
17.构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
18.析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
19.C++语言中基本的输入输出方法有两种:键盘屏幕输出输出和文件输入输出。
在文件打开的操作中,指定的文件模式有以下几种:
ios::app:把所有对文件有的输出添加在文件尾。它只用于输出文件。
ios::binary:文件以二进制方式打开。此项缺省是文件以文本的方式打开。
ios::nocreate:若文件不存在则将导致打开操作失败。
ios::out::表明该文件用于输出。此项可缺省。
ios::in:表明该文件用于输出。此项可缺省。
20.C++中有两种函数:常规函数和成员函数。函数其定义都包括4个部分:函数名、形式参数表、返回类型、函数体。
21.函数调用是传给形参的实参必须与形参在类型、个数、顺序上保持一致。参数传递有两种方式:一种是传值一个是引用类型。
22.当成员函数的返回值为传值方式时,允许改变该对象的私有数据成员。当成员函数的返回值为常值传值方式时,需要在函数说明中加上const标识。使得该对象的私有成员不能被改变。当成员函数的返回值为引用方式时,该成员函数的返回值应是一个已存在变量(或对象)的别名。当成员函数的返回值被改变时,其对应变量(或对象)的值将改变。当成员函数的返回值为常值引用方式时,其返回值与引用方式的成员返回值类同。但该成员函数不能改变该对象的私有成员。
23.在类的声明中可使用保留字friend定义友元函数。它可以死一个常规函数,也可以是另一个类的成员函数,如果想通过这种函数存取类的私有成员和保护成员,则必须在类的声明中给出函数的原型,并在该函数原型面前加上一个friend。
24.在C语言中使用函数malloc动态为程序变量分配它所需要的空间,并通过函数free动态的释放这个空间。函数malloc执行时,要求它的调用者使用函数sizeof提供所需的存储空间的数量。完成动态分配后还需要对返回指针做类型的强制转换。
25.继承性是渐增式修改已有的类定义以产生新类的技术。
26.多态性是指允许同一个函数有不同的版本,对于不同的对象执行不同的版本,C++支持以下两种版本:
(1)编译时的多态性,表现为函数名的重载;
(2)运行是的多态性,通过派生类和虚函数来实现。
C++中的函数名重载允许C++程序中多个函数取相同的函数名,但其形成参或返回类型可以不同。
VC++提供一种能力,可用同一个名字定义多个操作,这种能力叫做操作符重载。
一个虚函数是一个基类中被声明为“virtual”,并在一个或多个派生类中被重定义的函数。
27.C++中支持抽象函数的方式有三种:使用抽象的类,使用模板及使用viod*struct。第三种已经过时,在C++模板中的使用
28.算法的定义:一个有穷的指令集。特征:
输入、输出、确定、有穷、能行
29.算法的设计:自顶向下、逐步求精的结构化程序设计方法。
30.算法性能标准:正确性、可使用性、可读性、效率、健壮性、简单性
31.算法复杂性的度量属于事前估计,它可以分为空间复杂度度量S(n)和时间复杂度度量T(n)。
Sn的固定部分 这部分空间的大小与输入输出个数的多少、数值大小无关。主要包括存放程序指令代码的空间,常数,简单变量,定长成分(如数组元素、结构成分、对象的数据成员等)变量所占的空间等。这部分属于静态空间,只要做简单的统计就可估算。
Sn可变部分 这部分的空间主要包括其与问题规模有关的变量所占的空间、递归工作栈所用的空间,以及在算法运行过程中通过new和delete命令动态使用的空间。
Tn的运行时间涉及加减乘除、转移、存、取等基本运算。要准确地计算总运算时间是不可行的,因此度量算法的运行时间,主要从程序结构着手,统计算分的程序步数。:程序步是指在语法上或语义上有意义的一段指令序列,而且这段指令序列的执行时间与实例特性无关。(先注释,再声明语句,再表达式,再赋值语句,循环语句,switch语句,if_then语句,函数执行语句/函数调用语句,动态存储管理语句,转移语句)

我的更多文章

下载客户端阅读体验更佳

APP专享