数据结构------绪论
来源:互联网 发布:淘宝同学官网 编辑:程序博客网 时间:2024/06/05 03:15
相关概念:
一、数据结构及数据类型:
1.数据(data),是计算机加工处理的对象。
2.数据结构(data structure),是用某种方法组织起来的数据的集合;例如,数组就是一种常见的数据结构,它也被成为“静态数据结构(static data structure)”,因为在创建一个数组时其大小是固定的;另外还有许多“动态数据结构(dynamic data structure)”,如链表、二叉树等,它们的大小是可变的,可以在任何时候扩大或者缩小。
3.数据类型(data type),在数据结构中,描述为:
a.一个值(value)的集合;
b.一个数据表示法(data representation),踏实该数据类型中所有的值公用的;
c.一个操作(operation)的集合,每一个操作都可以统一地应用于该数据类型中所有的值;
Tips:Java提供了一些内置数据类型(built-in data type),eg:整型int、浮点型、字符型、布尔型、字符串等。
然而在实际开发中,程序设计语言提供的内置数据类型不可能满足所有应用的需求,所以需要引入新的数据类型,必须确定它的值、数据表示法和操作。
4.在Java中,引入新的数据类型的手段是类声明(class declaration)。类的对象(object)是新数据类型的实例,
类的实例变量(instance variable)确定了新数据类型的数据表示方法,类的构造方法(constructor)和方法(method)是新数据类型的操作。
5.在设计类成员时,应掌握一下原则:
a.类的实例变量应该是私有的,使外部类不能直接访问这些实例变量;
b.提供共有的方法以允许外部类访问或修改私有实例变量;
c.仅在类中调用的辅助方法应该是私有的;
Tips:以上原则体现了封装(encapsulation)和信息隐藏(information hiding)的思想,
即一个设计良好的对象应该封装与其需要执行的任务相关的所有状态和行为,同时尽可能多的隐藏内部实现细节。
二、抽象数据类型ADT(Abstract Data Type):
1.抽象(abstract),就是要求人们关注“做什么”而不是“怎么做”的过程。例如:对两个整数进行乘法运算时,我们并不关心它们在计算机中如何存储;同样,
连接两个字符串时并不需要知道它们的内部表示。这种把数据的使用与它的实现分离开来的做法称为数据抽象(data abstract)。
2.数据抽象通过抽象数据类型实现。抽象数据类型ADT可以描述为:
a.一个值的集合;
b.一个操作的集合,每一个操作都可以统一地应用于所有这些值;
Tips:它不包括数据表示法,而且这里的操作也是脱离了具体实现的抽象操作(abstract operation);
换句话说,抽象数据类型ADT,是指隐藏了数据表示法并且不涉及操作的实现细节的数据类型;它提供给客户的仅仅是数据的接口而屏蔽了它的实现。
3.ADT使用优点:
a.首先,客户不需要了解详细的实现细节就可以使用它;
b.其次,由于对客户屏蔽了数据类型的实现,因此,只要接口保持不变,数据实现的改变不会影响客户的使用;
4.ADT的规格说明:
每个ADT应该有一个规格说明(specification)或合约(contract),它指定ADT的每一个操作(包括操作的名字、参数类型、结果类型),但不指定
数据表示法,也不指定用于实现操作的算法。
ADT的规格说明是ADT的实现者和ADT的客户之间的协议(agreement)。实现者负责提供符合ADT规格说明的实现,但不关心ADT未来是如何被使用;
而客户仅仅是用ADT规格说明中指定的操作处理ADT的值,但不关心ADT是如何实现的。
5.ADT的实现:
要实现一个ADT,必须完成两项任务:
a.确定数据表示法,它必须适用于所有可能的值,并且应该是私有的。
b.对每个可能的操作确定一个算法,这些算法必须适合于已选择的数据表示法,所有辅助操作(不在规格说明中出现的操作)应该私有化。
- 数据结构绪论
- [数据结构]绪论
- 数据结构 绪论
- 数据结构绪论
- 数据结构---->绪论
- 数据结构 绪论
- 数据结构绪论
- 数据结构绪论
- 数据结构 绪论
- 《数据结构》 绪论
- 数据结构------绪论
- 数据结构 绪论
- 数据结构绪论
- 数据结构绪论
- 数据结构 绪论
- 数据结构绪论
- 数据结构-绪论
- 数据结构绪论
- nyoj_40 公约数和公倍数
- android内存优化的几个方面
- Android 代码混淆异常 transformClassesAndResourcesWithProguardForRelease FAILED
- 淘宝联盟分享赚怎么赚钱?
- 魅族和三星Galaxy 5.0webView 问题Android Crash Report - Native crash at /system/lib/libc.so caused by webvi
- 数据结构------绪论
- 拷贝构造函数和赋值操作符在继承中的应用
- 内存管理二之映射篇
- gitlab 添加key 报500错误
- Mobile phones(POJ_1195)
- mysql常用操作
- JSP :java.lang.ClassCastException:
- MFC多文档模式开发
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案