java问题,在线性表中删除一个结点,寻求解决方案!

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:46:12
以下是我做的两种解决方案,总是感觉有点不对,请大家帮我看看有什么问题。最好可以提供您自己的方法!大家讨论一下!
/**
* 在线性表中删除一个结点
* @author pisa
*
*/
public class Delete {

/**
* @param args
*/
public static void main(String[] args) {
Object t[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
t = delete(t,9,5);
for(Object s:t){
System.out.print(s);
}
}

/**
* 在数组t的索引i处删除结点
* @param t数组t
* @param n数组的size
* @param i数组索引
* @return
*/
public static Object[] delete(Object[]t,int n,int i){
for(int j=i;j<=n-1;j++){
t[j-1]=t[j];
}
n--;
Object v[]=new Object[n];
for(int j=0;j<n;j++){
v[j]=t[j];
}
// for(Object s:v){
// System.out.print(s);
// }
return v;
}
}

另外一个
import java.util.ArrayList;
import java.util.List;

/**
* 在线性表中删除一个结点
* @author pisa
*

第一个remove的方法里n--不对而是--n或者n-=1;
第二好像没啥问题但是可以优化一下代码。
public static Object[] delete(Object[]t,int n,int i){

List<Object> list = new ArrayList<Object>(Arrays.asList(t));
list.remove(i-1);//删除list中第i个元素
return list.toArray();
}