第5章 数据结构及常用算法Word文档格式.docx

上传人:b****1 文档编号:5186411 上传时间:2023-05-04 格式:DOCX 页数:25 大小:194.70KB
下载 相关 举报
第5章 数据结构及常用算法Word文档格式.docx_第1页
第1页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第2页
第2页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第3页
第3页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第4页
第4页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第5页
第5页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第6页
第6页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第7页
第7页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第8页
第8页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第9页
第9页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第10页
第10页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第11页
第11页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第12页
第12页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第13页
第13页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第14页
第14页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第15页
第15页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第16页
第16页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第17页
第17页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第18页
第18页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第19页
第19页 / 共25页
第5章 数据结构及常用算法Word文档格式.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第5章 数据结构及常用算法Word文档格式.docx

《第5章 数据结构及常用算法Word文档格式.docx》由会员分享,可在线阅读,更多相关《第5章 数据结构及常用算法Word文档格式.docx(25页珍藏版)》请在冰点文库上搜索。

第5章 数据结构及常用算法Word文档格式.docx

(3)publicvoidinsertElement(Objecto,intindex):

将新对象o插入到向量的指定索引位置.

(4)publicvoidaddElement(Objecto,intindex):

将新对象o添加到向量指定索引位置.

2.修改和删除向量元素

(1)publicvoidset(Objecto,intindex):

将指定索引位置的对象设置为o,覆盖原来的对象.

(2)publicvoidsetElement(Objecto,intindex):

将指定索引位置的对象设置为o,覆盖原来的对象元素.

(3)publicbooleanremoveElement(Objecto):

将向量序列中第一次出现的对象o删除,同时将后面元素移补上前删除空位.

(4)publicvoidremoveALLElement():

将向量序列中所有对象删除.

(5)publicObjectremove(intindex):

将向量序列中指定索引位置的对象元素删除,并返回该对象.

(6)publicObjectElementAt(intindex):

获取向量序列中指定索引位置的对象.

(7)publicObjectget(intindex):

(8)publicObjectfirstElement():

获取向量序列中的第一个对象.

(9)publicObjectlastElement():

获取向量序列中在的最后一个对象.

(10)publicEnumerationElement():

获取向量序列中的一个枚举对象.

(11)publicindexindexOf(Objecto):

获取对象o在向量序列中首次出现的位置.

(12)publicindexlastIndexOf(Objecto):

获取对象o在向量序列中最后出现的位置.

(13)publicindexlastIndexOf(Objecto,intindex):

获取向量序列中在向量位置之前出现的最后位置.

(3)publicbooleancontains(Objecto):

判断对象o是否是向量成员.

例5-1TestVector1.java-使用向量

importjava.util.*;

publicclassTestVector1

{

publicstaticvoidmain(Stringargs[])

{

Stringnames[]={"

Merry"

"

Martin"

Bob"

David"

};

intnamesLen=names.length;

//获取数组长度

Vectorstu=newVector();

//创建向量对象实例

for(inti=0;

i<

namesLen;

i++){

stu.addElement(names[i]);

//将数组元素值添加到向量对象末尾.

}

intstuLen1=stu.size();

//获取向量对象长度(元素大小)

stuLen1;

System.out.println(stu.elementAt(i));

//输出向量对象元素

}

例5-2TestVector2.java-使用向量依次存储不同数据类型

classTestVector2

{publicstaticvoidmain(Stringargs[]){

Vectorvector=newVector();

Datedate=newDate();

vector.add(newInteger(18));

//依次添加整数对象18到向量对象末尾,以下依次类推.

vector.add(newFloat(99.9f));

vector.add(newDouble(100.08));

vector.add(newBoolean(true));

vector.add(date);

System.out.println("

向量的总长度:

"

+vector.size());

向量的第1个元素:

+vector.firstElement());

//输出向量中元素对象

向量的第2个元素:

+vector.elementAt

(1));

向量的第3个元素:

+vector.get

(2));

向量的第4个元素:

+vector.get(3));

向量的第5个元素:

+vector.lastElement());

if(vector.contains(date))//如果向量中包含日期对象

{vector.addElement(newString("

verygood!

"

));

//添加字符串对象到向量对象末尾

向量的最后一个元素:

}

【例13.12】向量随机排列

importjava.util.Vector;

publicclassExample13_12

{publicstaticvoidmain(Stringargs[])

{Vectorvector=newVector();

//创建向量对象

inta[]={1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4};

随机排列之前的数组:

);

a.length;

i++)

{System.out.print("

+a[i]);

//输出数组元素

{vector.add(newInteger(a[i]));

//将数组对象元素添加到向量对象中

intk=0;

while(vector.size()>

0)

{intindex=(int)(Math.random()*vector.size());

//产生16个随机整数索引

intnumber=((Integer)vector.get(index)).intValue();

//取得索引对应值

a[k]=number;

//存入数组

k++;

vector.removeElementAt(index);

//删除向量中对应索引的元素

随机排列之后的数组:

//输出经随机排列的数组元素

System.out.println();

}

5.1.3枚举(Enumeration)–Vector类也可以用枚举器来列举和存放许多元素。

Vector类的Enumeration()方法可返回一个Enumeration接口,该接口有两个常用方法:

(1)hasMoreElements()//判断是否还有元素

(2)nextElement()//下一个元素

使用方法如下:

例5-3TestEnumeration

publicclassTestEnumeration

publicstaticvoidmain(Stringargs[])

Stringnames[]={"

dog"

cat"

fish"

bird"

//创建字符串数组对象并初始化数组

intnamesLen=names.length;

//取得数组长度

Vectoranimal=newVector();

for(inti=0;

i++){//for循环将数组元素依次添加(存)到向量对象中

animal.addElement(names[i]);

}

Enumerationenum1=animal.elements();

//用向量对象的elements()方法获取一个枚举对象

Stringname=null;

//while循环枚举对象中判断是否还有元素,如果有取出枚举中的元素并输出

while(enum1.hasMoreElements())

{

name=(String)enum1.nextElement();

//下一个元素

System.out.println(name);

//输出枚举对象中的元素

5.2散列表(Hashtable-哈希表)

数组,向量提供了集合内容的顺序访问,哈希表可以对集合内容进行随机访问。

哈希表是使用关键字查找被存储的数据项的一种数据结构,可以通过键(名)-值对应集合内容进行随机访问,是Map接口的主要实现类.

5.2.1创建哈希表对象–用java.util包中Hashtable类的构造函数来创建,其Hashtable类的构造函数如下:

(1)publicHashtable();

创建具有默认容量和装载因子为0.75的散列表

(2)publicHashtable(intintialCapacity);

创建具有指定容量和装载因子为0.75的散列表.

(3)publicHashtable(intintialCapacity,floatloadFactor);

创建具有指定容量和指定装载因子的散列表.如:

Hashtabletable1=newHashtable();

5.2.2哈希表主要方法如下:

(1)publicvoidput(Objectkey,Objectvalue)--加进对象(键/值)关键字/数值对.

(2)publicObjectget(Objectkey)—取得一个关键字的值.

(3)publicObjectremove(Objectkey)---删除一个元素

(4)publicintsize()---取得哈希表中关键字的数目

(5)publicBooleanempty()---判断哈希表是否为空

(6)publicEnumerationkeys()---取得所有关键字设置

(7)publicEnumerationelements()---取得所有数值的设置,两者都返回Enumeration.

例5-4TestHarsh.java

publicclassTestHarsh

Stringsubject[]={"

语文"

数学"

英语"

政治"

//创建字符串科目数组代表键(名)

Stringscore[]={"

88"

99"

96"

92"

//创建字符串分数数组代表键(名)对应值

Hashtablehash=newHashtable();

//创建哈希表对象

subject.length;

i++){//获得科目数组长度

hash.put(subject[i],score[i]);

//将科目数组和分数数组加进hash对象中(键/值)对

//取得hash表中所有关键字并赋给枚举对象元素(返回枚举类型Enumeration.)

Enumerationenum1=hash.keys();

Objectobj;

//声明引用对象变量

//判断枚举对象是否还有元素,如果有while循环输出键值对

while(enum1.hasMoreElements()){

//枚举对象的nextElement()方法取得下一个枚举元素值(键/值)

obj=enum1.nextElement();

System.out.println(obj+"

:

+hash.get(obj));

//输出取得的关键字和枚举元素值(键/值)

5.3数据结构中的接口

Java2数据结构提供了4种重要接口:

Collection﹑List﹑Set﹑Iterator接口,用于描述不同类型的数据结构.

5.3.1Collection接口

Collection接口是任何对象组的集合,对象的存放没有一定的顺序,并且允许重复,可以存放几个相同的对象.Collection接口的常用方法如下:

(1)publicbooleanadd(objecto)–向集合添加对象.

(2)publicbooleanremove(objecto)–从集合删除对象.

(3)publicbooleancontains(objecto)–判断是否包含对象.

(4)publicbooleanequals(objecto)–比教两个对象是否相同

例5-5TestCollection.java–使用Collection接口

publicclassTestCollection{

publicstaticvoidmain(Stringargs[]){

StringstrNumber[]={"

one"

two"

three"

four"

five"

six"

seven"

eight"

intstrlen=strNumber.length;

//获得数组长度

CollectionNumbers=newVector();

//创建向量对象使用Collection接口的变量引用

strlen;

Numbers.add(strNumber[i]);

//添加数组元素值到Collection接口集合对象中

}

Objects[]=Numbers.toArray();

//将集合对象转换为数组

s.length;

i++){//取得数组长度for循环输出数组中个元素

System.out.println(s[i].toString());

//

5.3.2Set接口

集合是由不重复元素组成的.Set集合接口中的元素不重复,且至多包含一个null元素.

例5-6TestSet.java使用Set接口(对象无序存放)

classTestSet{

publicstaticvoidmain(String[]args){

HashSeth=newHashSet();

//创建哈希Set集合接口对象

h.add("

1st"

//向集合添加对象

2nd"

h.add(newInteger(3));

h.add(newDouble(4.0));

//重复元素,未被加入

m1(h);

//调用m1(h)方法输出集合

publicstaticvoidm1(Sets){//m1方法形式参数为Set无序集合接口

System.out.println(s);

//输出集合

5.3.3List接口

List接口是一种可含有重复元素的,有序的数据集合,也称序列.用户可以控制向序列中插入元素的位置,并可按元素的位序(加入顺序)来进行访问,位序从0开设.

5-7TestList.java使用List接口(可存储重复元素)

classTestList{

ArrayListh=newArrayList();

//创建List接口对象

//在List接口对象中添加不同类型的对象元素

h.add(newInteger(111));

h.add(newDouble(2.22));

//加入重复元素

publicstaticvoidm1(Lists){//m1方法参数为List有序集合接口

//输出List接口对象中的对象元素

5.3.4Iterator接口

可以通过任何Collection接口中定义的iterator()方法获得一个Iterator对象.List接口中声明了三种方法hasNext(),next(),remove().Set对象对应的Iterator仍然是无序的.

例5-8TestIterator.java使用Iterator接口

classTestIterator{

//在List接口对象中添加不同类型的对象元素

Iteratorit=h.iterator();

//用List接口对象集合的方法iterator()获得一个Iterator接口对象

while(it.hasNext()){//判断Iterator接口对象中是否有对象元素

System.out.println(it.next());

//输出对象元素

5.4堆栈

堆栈(Stack)是一种遵循:

”后进先出”原则的重要线性数据结构,只允许在一端输入和输出线性的顺序表.堆栈把一个输入的数据放在最底下,把后面放入的数据放在已有数据的顶上,最后输入的数据在堆栈的最上面.这样堆栈就有一个固定的栈底和一个浮动的栈顶.允许输入和输出的一端称为栈顶(top),另一端称为栈底(bottom).

向堆栈中压入数据的操作称为”压栈”;

从堆栈中输出数据的操作称为”弹栈”.由于堆栈总是在栈顶进行数据的输入输出操作,所以弹栈总是先输出最后压入堆栈中的数据,这就是后进先出的原理.

在Java中,使用jsva.util包中的Stack类来创建堆栈对象.如:

Stackperson=newstack();

//Stack()是Stack类唯一的构造函数

Stack类是向量Vector类的子类,所以Stack类不但具有Vector类的所以方法,同时还有自己操作堆栈对象的方法,主要方法如下.

PublicObjectpush(Objecto)--将对象压入(输入)堆栈的操作.

Pubilcobjectpop(Objecto)--将栈顶对象弹出(输出)堆栈的操作.

PublicBooleanempty()--判断堆栈是否还有数据,若有数据,返回false;

否则返回true.

PublicObjectpeek():

--查看并返回堆栈顶端数据,但不删除.

Publicintsearch(Objecto);

查看数据在堆栈中的位置,最顶端的位置1,向下依次增加,如果堆栈不含该数,则返回-1.

例5-9TestStack.java-堆栈类的使用

classTestStack

{publicstaticvoidmain(Stringargs

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2