seqlist插入java_大话数据结构(五)(java程序)——顺序存储结构的插入与删除...

获得元素操作

对于线性表的顺序存储结构来说,我们要实现getElement操作,即将线性表的第i个位置元素返回即可

插入操作

插入算法思路:

1、如果插入位置不合理,抛出异常

2、如果插入表的长度大于等于数组长度,则抛出异常或动态增容

3、从最后一位元素开始向前遍历到第i个位置,分别把它们都向后移动一个位置

4、将要插入元素填入位置i处

5、表长度加1

删除操作

1、如果删除位置不合理,抛出异常

2、取出插入元素

3、从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一位

4、表长度减一

public interfaceList {public Object getElement(int index) throwsException;public void doInsert(Object obj,int index) throwsException;public void doDelete(int index) throwsException;

}

public class SequenceList implementsList{static final int DEFUALTLENTH=10;int maxSize;//最大数组长度

int size;//当前长度

Object[] list;//对象数组//顺序表初始化方法

public void init(intsize1){

maxSize= size1;//这个表的长度为size1

list = newObject[size1];

}//无参构造方法

publicSequenceList() {

init(DEFUALTLENTH);

}//有参构造方法

public SequenceList(intsize2){

init(size2);

}

@Overridepublic Object getElement(int index) throwsException {if(size==0 || index<0 || index>=size){

System.out.println("参数不正确");

}if(size ==maxSize){

System.out.println("");

}returnlist[index];

}

@Overridepublic void doInsert(Object obj,int index) throwsException {if(index<0 || index>size+1){

System.out.println("参数错误");

}if(size ==maxSize){

System.out.println("线性表已满,无法插入");

}for(int i=size-1;i>index-1;i--){

list[i+1]=list[i];//指定位置之后的元素都后移一位

}

list[index]=obj;

size++;

}

@Overridepublic void doDelete(int index) throwsException {if(index<0||index>=size){

System.out.println("参数错误");

}if(indexindex;i--){

list[i-1] =list[i];

}

}

size--;

}

}

public classListTest {public static voidmain(String args[]){

SequenceList seq= new SequenceList(20);try{

seq.doInsert("aa", 1);

seq.doInsert("bb", 2);

seq.doInsert("cc", 3);for(int j=0;j

System.out.println(seq.getElement(j));}

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public class StudentList {

public static void main(String args[]){

SequenceList seqList = new SequenceList(30);

try {

seqList.doInsert(new Student(1,"小米","女",23), seqList.size);//每次插入,都在表的最后一位插入

seqList.doInsert(new Student(2, "小徐", "男", 22), seqList.size);

for(int i=0;i

System.out.println("第"+(i+1)+"学生信息为:"+seqList.getElement(i).toString());

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class Student{

private int id;

private String name;

private String gender;

private int age;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "student [id=" + id + ", name=" + name + ", gender=" + gender

+ ", age=" + age + "]";

}

public Student(int sid,String name,String gender,int age){

this.id = sid;

this.name = name;

this.gender = gender;

this.age = age;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值