栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CPT102 Data Structure

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CPT102 Data Structure

Steven Guan 讲的顺序真的迷 我还是老老实实按教材来吧

第一章略

第二章 算法分析

2.1 数学基础

定义2.1 如果存在正常数cn0使得当N≥n0T(N)≤cf(N),则记为TN=O(fN).

定义2.2 如果存在正常数cn0是使得当N≥n0T(N)≥cg(N),则记为TN=Ω(gN).

定义3.3

定义3.4

最大子序列和       欧几里得算法

第三章 表,栈和队列

3.1 抽象数据类型

       抽象数据类型(abstract data type, ADT)是带有一组操作的一些对象的集合。对于集合ADT,可以有像添加(add),删除(remove)以及包含(contain)这样一些操作,

       3.2 表ADT

       我们将处理形如A0,A1,A2,….,An-1 的一般的表。我们说这个表的大小是N。将大小为0的特殊表称为空表。

       表的数组的简单实现:

  1. int [] arr = new int [ 10 ];  
  2.   
  3. //下面我们决定扩大arr  
  4. int [] newArr = new int[ arr.length * 2 ];  
  5. for ( int i = 0; i < arr.length; i++ )   
  6.      newArr[ i ] = arr[ i ];  
  7. arr = newArr;  

3.3 简单链表

为了避免插入和删除的线性开销,我们需要保证表可以不连续储存,否则表的每个部分都可能需要整体移动。

链表由一系列节点组成,这些节点不必在内存中相连。每个节点均含有表元素和到包含该元素后继元的节点的链(link)。我们称之为next链。最后一个单元的next链引用null。

双链表

3.4 Java Collections API 中的表

在类库中,Java语言包中有一些普通数据结构的实现。该语言的这一部分通常叫做Collections API。表ADT是在Collection API中实现的数据结构之一。

Collection接口

Collection API 位于 java.util 包中。集合collection的概念在collection接口中得到抽象,它储存一组类型相同的对象。

该接口的一些最重要的部分(一些方法未被显示)

  1. public interface Collection extends Iterable
  2. {  
  3.         int size();  
  4.         boolean isEmpty();  
  5.         void clear();  
  6.         boolean contains( AnyType x);  
  7.         boolean add(AnyType x);  
  8.         java.util.Iterator iterator();  
  9. }  

在Iterable类型上使用增强的for循环

  1. public static  void print(Collection col1){  
  2.         for(AnyType item: col1)  
  3.             System.out.println(item);  
  4.     }  
  5. }  

Iterator接口

实现Iterator接口的集合必须提供一个称为iterator的方法,该方法返回一个Iterator类型的对象。该Iterator是一个在java.util包中定义的接口。

  1. public interface Iterator{  
  2.         boolean hasNext();  
  3.         AnyType next();  
  4.         void remove();  
  5.     }  

Iterator接口的思路是通过iterator方法,每个集合均可创建并返回给客户一个实现Iterator接口的对象,并将当前位置的概念在对象内部储存下来。每次对next的调用都给出集合的(尚未见到的)下一项,因此第一次调用next给出第一项,第二次调用给出第二项,…。hasNext用来告诉是否存在下一项。Iterator接口还包含一个方法remove,该方法可以删除由next最新返回的项(此后,我们不能再调用remove,直到对next再一次调用后)。虽然Collection接口也包含一个remove方法,但是使用Iterator的remove方法可能更有优点。

Iterator的remove方法优点在于,Collection的remove方法必须首先找出要被删除的项。P43

List接口,ArrayList类和linkedList类

List由java.util包中的List接口指定。List接口继承了Collection接口,因此它包含Collection接口中的所有方法,外加一些其他方法。

  1. public interface List extends Collection{  
  2.         Anytype get( int idx );  
  3.         Anytype set( int idx, Anytype newVal );  
  4.         void add( int idx, Anytype x );  
  5.         void remove( int idx );  
  6.           
  7.         ListIterator listIterator( int pos );   
  8.     }  

get和set使得用户可以访问或改变通过由位置索引idx给定的表中指定位置上的项。索引0位于表的前端,索引size() – 1代表表中的最后一项,而索引size() 则表示新添加的项可以是被放置的位置。add使得在位置idx处置入一个新的项(并把其后的项向后推移一个位置)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号