本章的基本概念汇总课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《本章的基本概念汇总课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本章 基本概念 汇总 课件
- 资源描述:
-
1、1 抽象列表抽象列表 单链表单链表 双链表双链表 循环链表循环链表 向量列表向量列表2数据的存储结构数据的存储结构顺序存储顺序存储3用用一个数组变量一个数组变量可以表示可以表示一组相同性质的数据。一组相同性质的数据。数组声明的数组声明的格式格式为:为:类型标识符类型标识符 数组名数组名 或或 类型标识符类型标识符 数组名数组名如:如:int score;或者或者int score;数组的初始化数组的初始化是确定如下几项的过程:是确定如下几项的过程:元素的个数元素的个数整个数组所整个数组所占用的存储空间占用的存储空间数组中各个数组中各个元素的初始值元素的初始值(整型初值为(整型初值为0 0;浮点
2、型初值为;浮点型初值为0.00.0;布尔;布尔型初值为型初值为falsefalse;字符型初值为;字符型初值为u0000u0000;用户自定义的类型初值为;用户自定义的类型初值为nullnull)初始化数组的方法如下:初始化数组的方法如下:(1)使用)使用new操作符操作符(a a)先声明数组再初始化。如:)先声明数组再初始化。如:int score;score=new int150(b b)声明的同时进行初始化。如:)声明的同时进行初始化。如:int score=new int150;(2)给数组中所有的元素手动赋予初始值。如:)给数组中所有的元素手动赋予初始值。如:int score=65
3、,34,48,87,78,98;4 内存分配方式是静态分配还是动态分配?内存分配方式是静态分配还是动态分配?存储密度是存储密度是1吗?吗?存储密度(存储密度(Storage Density)是指元素数据本身是指元素数据本身所占的存储量和整个元素所占的存储量之比,即:所占的存储量和整个元素所占的存储量之比,即:存储密度存储密度=(元素数据本身所占的存储量)(元素数据本身所占的存储量)/(元素所占的存储总量)(元素所占的存储总量)如何访问数组的第如何访问数组的第i个元素?个元素?如何实现插入删除一个元素?如何实现插入删除一个元素?数组的容量不够的话怎么办?数组的容量不够的话怎么办?5 P35:向量
4、的底层是:向量的底层是数组数组protected Object elementData;向量的扩展虽是向量的扩展虽是自动自动进行进行的,但扩展仍需的,但扩展仍需要付出一定代价。要付出一定代价。扩展方法扩展方法复制的元素的次数复制的元素的次数增增1n(n-1)/2增增kn(n/k-1)/2扩展扩展2倍倍n-16 内存分配方式:静态分配内存分配方式:静态分配程序执行之前必须明确规定程序执行之前必须明确规定存储规模存储规模。若线性表长度。若线性表长度n变化变化较大,则存储规模难于预先确定:估计过大将造成空间浪较大,则存储规模难于预先确定:估计过大将造成空间浪费;估计太小又将使空间溢出机会增多。费;估
5、计太小又将使空间溢出机会增多。元素存取方式:随机存取元素存取方式:随机存取对表中任一元素都可在对表中任一元素都可在O(1)时间内直接获取。时间内直接获取。插入删除操作:需移动元素插入删除操作:需移动元素在顺序存储结构中进行插入和删除,平均要移动表中近一在顺序存储结构中进行插入和删除,平均要移动表中近一半的元素,尤其是当每个结点的信息量较大时,移动结点半的元素,尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观。的时间开销就相当可观。存储密度:为存储密度:为1 当线性表的长度变化不大,易于事先确定其大小时,为了当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序存
6、储结构。节约存储空间,宜采用顺序存储结构。7向量和数组在向量和数组在元素变动比较剧烈元素变动比较剧烈的情况不的情况不适应。适应。链表适合在元素频繁变动的情况下采用。链表适合在元素频繁变动的情况下采用。链表是一种链表是一种动态动态的数据结构,可以按需要的数据结构,可以按需要进行扩展和缩减。进行扩展和缩减。这种扩展和缩减可以在这种扩展和缩减可以在常量(常量(O(1)时)时间里间里完成。完成。8 头部插入头部插入 中间插入中间插入 尾部插入尾部插入 头部删除头部删除 删除删除 中间删除中间删除 尾部删除尾部删除链表操作:链表操作:插入插入Lifeon数据域数据域 引用域引用域每个元素都由两部分组成:
7、每个元素都由两部分组成:数据域数据域和和引用域引用域数据域数据域存放元素本身的数据;存放元素本身的数据;引用域引用域存放所指向元素的引用;存放所指向元素的引用;9链表的设计链表的设计 设计设计接口接口 设计设计抽象的链表类抽象的链表类 设计符合设计符合具体需求具体需求的链表类的链表类10public interface List extends Structure /*Determine size of list.*post returns number of elements in list *return The number of elements in list.*/public in
8、t size();/*Determine if list is empty.*post returns true iff list has no elements *return true if list has no elements.*/public boolean isEmpty();11 /*Remove all elements of list.*post empties list */public void clear();/*Add a value to the head of the list.*post value is added to beginning of list
9、*param value The value to be added to the head of the list.*/public void addFirst(Object value);/*Add a value to tail of list.*post value is added to end of list *param value The value to be added to tail of list.*/public void addLast(Object value);12/*Fetch first element of list.*pre list is not em
10、pty *post returns first value in list *return A reference to first element of list.*/public Object getFirst();/*Fetch last element of list.*pre list is not empty *post returns last value in list *return A reference to last element of list.*/public Object getLast();13/*Remove a value from first eleme
11、nt of list.*pre list is not empty *post removes first value from list *return The value actually removed.*/public Object removeFirst();/*Remove last value from list.*pre list is not empty *post removes last value from list *return The value actually removed.*/public Object removeLast();14/*Remove a
12、value from list.At most one of value *will be removed.*post removes and returns element equal to value *otherwise returns null *param value The value to be removed.*return The actual value removed.*/public Object remove(Object value);/*Add an object to tail of list.*post value is added to tail of li
13、st *param value The value to be added to tail of list.*see#addLast */public void add(Object value);15 /*Removes value from tail of list.*pre list has at least one element *post removes last value found in list *return object removed.*/public Object remove();/*Retrieves value from tail of list.*pre l
14、ist has at least one element *post returns last value found in list *return object found at end of list */public Object get();16 /*Check to see if a value is in list.*pre value is not null *post returns true iff list contains an object equal to value *param value value sought.*return True if value i
15、s within list.*/public boolean contains(Object value);/*Determine first location of a value in list.*pre value is not null *post returns(0-origin)index of value,*or-1 if value is not found *param value The value sought.*return index(0 is first element)of value,or-1 */public int indexOf(Object value)
16、;17 /*Set value stored at location i to object o,returning old value.*pre 0=i size()*post sets ith entry of list to value o;*returns old value *param i location of entry to be changed.*param o new value *return former value of ith entry of list.*/public Object set(int i,Object o);/*Insert value at l
17、ocation.*pre 0=i=size()*post adds ith entry of list to value o *param i index of this new value *param o value to be stored */public void add(int i,Object o);18 /*Determine last location of a value in list.*pre value is not null *post returns(0-origin)index of value,*or-1 if value is not found *para
18、m value value sought.*return index(0 is first element)of value,or-1 */public int lastIndexOf(Object value);/*Get value at location i.*pre 0=i size()*post returns object found at that location *param i position of value to be retrieved.*return value retrieved from location i(returns null if i invalid
19、)*/public Object get(int i);19 /*Remove and return value at location i.*pre 0=i size()*post removes and returns object found at that location *param i position of value to be retrieved.*return value retrieved from location i(returns null if i invalid)*/public Object remove(int i);/*Construct an iter
20、ator to traverse elements of list *from head to tail,in order.*post returns an iterator allowing *ordered traversal of elements in list *return Iterator that traverses list.*/public Iterator iterator();20示例:唯一程序(示例:唯一程序(Unique.java)该程序对输入的字符流进行检查,删除重复的行,打印剩余的行。字符流字符流s是否结束?是否结束?读入一行读入一行查找唯一列表查找唯一列表li
21、nes,有相同行否?有相同行否?打印,打印,把该行加入把该行加入linesNYNY程序结束程序结束21public static void main(String args)ReadStream s=new ReadStream(System.in);String current;List lines=new SinglyLinkedList();while(!s.eof()current=s.readLine();if(!lines.contains(current)System.out.println(current);lines.add(current);22思考思考 列表lines的类
22、型是SinglyLinkedList;单链单链表的存储结构是顺序的还是链式的?表的存储结构是顺序的还是链式的?程序中都用到了哪些列表的方法?想想他们程序中都用到了哪些列表的方法?想想他们应该如何实现?应该如何实现?23小型停车场的小型停车场的租用协议租用协议(类似于(类似于内存池内存池的动态分的动态分配)配)停车场共有停车场共有10个停车位,个停车位,3个小型,个小型,6个中型,个中型,1个大型:个大型:如果在如果在自由列表(自由列表(free)中能够找到一个合适的停中能够找到一个合适的停车位,那么用户就可以租用这个停车位,并在车位,那么用户就可以租用这个停车位,并在租租用列表(用列表(ren
23、ted)中保存租用人和停车位描述之中保存租用人和停车位描述之间的关联。间的关联。用户也可以退租,退租后的车位可以为别人使用。用户也可以退租,退租后的车位可以为别人使用。2400102031415161718192freenumber域,域,标示车位号标示车位号size域,标域,标示车位大小示车位大小Space对象,表示空闲对象,表示空闲的停车位号和车位大小的停车位号和车位大小25关联(关联(Assocoation.java)theKeytheValue键值对(键值对(key-value pair)的键:)的键:protected Object theKey;键值对(键值对(key-value
24、pair)的值:)的值:protected Object theValue;n两个参数的构造方法:两个参数的构造方法:Association(Object key,Object value)n一个参数的构造方法:一个参数的构造方法:Association(Object key)n看两个键值对是否相等:看两个键值对是否相等:boolean equals(Object other)n查询键值对的键:查询键值对的键:Object getValue()n查询键值对的值:查询键值对的值:Object getKey()2600张三张三61李四李四rented关联的关联的theKey域,域,标示租用人标示租
25、用人关联的关联的theValue域域,标示租用的,标示租用的车位信息,是一车位信息,是一个个Space对象对象关联类型(关联类型(Association)的对象,记录租用人和被的对象,记录租用人和被租用的车位之间的关联租用的车位之间的关联27import structure.*;class Spacepublic final static int COMPACT=0;public final static int MINIVAN=1;public final static int TRUCK =2;protected int number;protected int size;public S
展开阅读全文