public class Sequence<T> {
//final int maxSize=10; //顺序表长度
private T[] listArray; //存储数据元素的数组对象
private int length; //已存数据元素个数
//无参构造方法
public Sequence ( ) { }
//带参构造方法,初始化一个长度为n的顺序表
public Sequence (int n) {
if(n<=0){
System.out.println("错误!长度不能小于0");
System.exit(1);
}
length=0; //顺序表初始为空
listArray=(T[])new Object[n];
}
//插入数据元素
public boolean insert(T obj,int pos) {
if(pos<1||pos>length+1){
System.out.println("pos值不合法,指定插入的位置不存在");
return false;
}
if(length==listArray.length){ //若数组元素长度不够,需要加长长度,并将已有元素都复制过来
T[] p=(T[])new Object[length*2];
for(int i=0;i<length;i++)
p[i]=listArray[i];
listArray=p;
}
for(int i=length;i>=pos;i--)
listArray[i]=listArray[i-1];
listArray[pos-1]=obj;
length++;
return true;
}
//判断顺序表是否为空
public boolean isEmpty(){
return length==0;
}
//删除数据元素
public T delete(int pos) {
T x=listArray[pos-1];
for(int i=pos;i<=length;i++)
listArray[i-1]=listArray[i];
length--;
return x;
}
//查找数据元素
public int find(T obj) {
if(isEmpty( )){
System.out.println("顺序表为空");
return -1;
}
else{
for(int i=0;i<length;i++)
if(listArray[i].equals(obj))
return i+1;
return -1;
}
}
//获取数据元素
public T value(int pos) {
if(isEmpty( )){
System.out.println("顺序表为空");
return null;
}
else{
if(pos<1||pos>length){
System.out.println("pos值不合法");
return null;
}
return listArray[pos-1];
}
}
//修改数据元素
public boolean modify(T obj,int pos)
{ if(isEmpty( )){
System.out.println("顺序表为空");
return false;
}
else{
if(pos<1||pos>length){
System.out.println("error");
return false;
}
listArray[pos-1]=obj; return true;
}
}
//求顺序表的长度
public int size(){
return length;
}
//顺序表正序输出
public void nextOrder() {
int i;
System.out.print("[");
for(i=0;i<length-1;i++)
System.out.print(listArray[i]+",");
System.out.print(listArray[i]);
System.out.print("]");
}
}
题目要求:
1、在顺序表类Sequence.java中增加具有以下功能的方法: 1)追加元素的add方法。即直接将新来的元素追加在顺序表的最后 2)根据值查找来删除元素deleteValue方法,即按照传递过来的数据元素值进行匹配删除(可考虑匹配到多个相同值时,全部删除) 2、在主类中,新建Sequence的对象,实现以下功能: 1)初始化顺序表s,长度为10,类型存储为字符串 2)增加3个元素“ann”、“bob”、“cindy” 3)在“cindy”前插入“caty” 4)在最后追加一个“ann” 5)输出显示这个顺序表s 6)删除所有的“ann”
请问你在哪一个具体的要求上碰到了问题? 你尝试了怎么解决?
在顺序表的查找操作中,判定元素相等的条件为 if(key.equals(this.element[i])),若换成if(this.element[i].equals(key)),查找结果会怎样?为什么?