当前位置:文档之家› 实验七 查找

实验七 查找

实验报告七查找实验
一、实验目的:
1、熟悉线性查找算法。

2、掌握顺序查找、二分查找算法
二、实验内容:
1.SeqList类中增加下列成员方法:
public int lastIndexOf(T key) { //返回最后出现的关键字为key元素位置int num=0;
for(int i=0;i<this.value.length;i++)
if(this.value[i]==key)
num++;
retuen num;
}
2.为顺序表和单链表增加以下基于查找的删除和替换操作的成员方法:
public void removaAll(T key) //删除所有关键字为key元素
顺序表:
public void removaAll(T key){
for(int i=0;i<this.value.length;i++)
if(this.value[i]==key){
remove[i];
i--;
}
}
public void remove(int index){
for(int i=index;i<this.value.length;i++){
if(i<this.value.length-1)
this.value[i]=this.value[i+1];
else
this.valye[i]=null;
}
}
单链表
public void removaAll(T key){
Node<T> p=this.head;
while(p.next!=null){
if(p.next.data==key)
p.next=p.next.next;
}
}
public void replace (T x, T y) //将首次出现的元素x替换为y
顺序表
public void replace (T x, T y){
for(int i=0;i<this.value.length;i++)
if(this.value[i]==x){
this.value[i]=y;
break;
}
}
单链表
public void replace (T x, T y){
Node<T> p=this.head;
while(p.next!=null)
if(p.next.data==x){
p.next.data=y;
break;
}
}
public void replace(T x,T y) ) //将所有元素x替换为y 顺序表
public void replace (T x, T y){
for(int i=0;i<this.value.length;i++)
if(this.value[i]==x)
this.value[i]=y;
}
单链表
public void replace (T x, T y){
Node<T> p=this.head;
while(p.next!=null)
if(p.next.data==x)
p.next.data=y;
}
3、有序表的二分查找(折半查找)
public int binarySearch(T key){
int begin=0,end=this.value.length-1;
if(key!=null)
while(begin<=end){
int mid=(begin+end)/2;
if(value[mid]==key)
return mid;
if(value[mid]>key)
end=min-1;
else
begin=mid+1;
}
return -1;
}
三、实验心得(含上机中所遇问题的解决办法,所使用到的编程技巧、创新
点及编程的心得)。

相关主题