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


    获得元素操作

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

    插入操作

    插入算法思路:

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

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

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

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

    5、表长度加1

    删除操作

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

    2、取出插入元素

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

    4、表长度减一

    public interface List {
        public Object getElement(int index) throws Exception;
        public void doInsert(Object obj,int index) throws Exception;
        public void doDelete(int index) throws Exception;
    }
    public class SequenceList implements List{
        static final int DEFUALTLENTH=10;
        int maxSize;//最大数组长度
        int size;//当前长度
        Object[] list;//对象数组
        
        //顺序表初始化方法
        public void init(int size1){
            maxSize = size1;//这个表的长度为size1
            list = new Object[size1];
        }
        //无参构造方法
        public SequenceList() {
            init(DEFUALTLENTH);
        }
        //有参构造方法
        public SequenceList(int size2){
            init(size2);
        }
    
        @Override
        public Object getElement(int index) throws Exception {
            if(size==0 || index<0 || index>=size){
                System.out.println("参数不正确");
            }
            if(size == maxSize){
                System.out.println("");
            }
            return list[index];
        }
    
        @Override
        public void doInsert(Object obj,int index) throws Exception {
            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++;
        }
    
        @Override
        public void doDelete(int index) throws Exception {
            if(index<0||index>=size){
                System.out.println("参数错误");
            }
            if(index<size){
                for(int i=size-1;i>index;i--){
                    list[i-1] = list[i];
                }
            }
            size--;
            
        }
        
    
    }
    public class ListTest {
        public static void main(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<seq.size;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<seqList.size;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;
    	}
    	
    }
    

      

  • 相关阅读:
    技术博客开博,谢谢大家
    数据库自动备份,crontab定时任务
    服务器端口对外开放(包括,mysql,django)
    记 第一次linux下简易部署 django uwsgi nginx
    Oracle Undo表空间使用情况分析
    Oracle自动启动脚本配置
    Oracle 12cR2 RAC节点查询GV$视图报错ORA-12805
    Oracle 12cR2 RAC集群安装指南
    基于Java SSM框架和layui构建的博客、论坛、新闻、文章随笔系统(包含前后台)
    SSM实现java开发电子手机商城在线商城系统源码 MySQL数据库
  • 原文地址:https://www.cnblogs.com/snowwang/p/6038073.html
Copyright © 2020-2023  润新知