zoukankan      html  css  js  c++  java
  • 顺序表----java实现

    最简单的数据结构——顺序表,此处以数组为例。

    顺序表的优点:支持随机读取,内存空间利用率高。

    顺序表的缺点:1.需要预先给出最大数据元素个数,这往往很难实现。

     2.插入和删除时需要移动大量数据。

    SeqList.java

    package com.sheepmu;
    
    public class SeqList {
    	private int maxSize;
    	private int size;
    	private Object[] arrayList;
    	public SeqList(int sz){
    		maxSize=sz;
    		size=0;
    		arrayList=new Object[sz];
    	}
    	
    	public void insert(int i,Object obj)throws Exception{//顺序表的 插入
    		if(size==maxSize)
    			throw new Exception("顺序表已满,无法插入!");
    		if(i<0||i>size)
    			throw new Exception("插入位置不存在!");
    		
    		//for(int j=i;j<=size;j++) 
    		//	arrayList[j+1]=arrayList[j];这不是每个后移了,这是把后面的每个都变成arrayList[j]
    		
    		for(int j=size;j>i;j--){//这个才能实现真正的后移~!!
    			arrayList[j]=arrayList[j-1];
    		}	
    		 
    		arrayList[i]=obj;
     		size++;
    	}
    	
    	public Object delete(int i)throws Exception{//顺序表 删除
    		if(size==0)
    			throw new Exception("顺序表已为空");
    		if(i<0||i>size)
    			throw new Exception("删除位置不存在!");
    		Object obj=arrayList[i];
    		for(int j=i;j<size;j++){
    			arrayList[j]=arrayList[j+1];//前移~
    		}
    		size--;
    		return obj;
    	}
    	
    	public Object getData(int i)throws Exception{//取值
    		if(i<0||i>size)
    			throw new Exception("该位置不存在!");
    		return arrayList[i];
    	}
    	public int getSize(){//大小
    		return size;
    	}
    	public boolean isEmpty(){//是否为空
    		return size==0;
    	}
    }
    

    SeqListTest1.java

    package com.sheepmu;
    /**
     * 建立一个线性表,依次输入元素0,1,2...9;然后在第4个位置插入9 ,然后删除数据元素7。最后依次显示当前线性表元素。
     * 采用顺序表实现。
     * @author SheepMu
     *
     */
    public class SeqListText1 {
    	public static void main(String[] args)   throws Exception{
    		SeqList seqList=new SeqList(100);
    		System.out.println("原始线性表:");
    		 for(int i=0;i<10;i++){
    				seqList.insert(i, new Integer(i));
    				 System.out.print (seqList.getData(i) +"  ");
    		 }
    	 System.out.println("插入一个元素后:");
    			seqList.insert(4, new Integer(9));
    			for(int i=0;i<seqList.getSize();i++){
    				System.out.print (seqList.getData(i) +"  ");
    			}
    	 System.out.println("删除一个元素后:");	 
    		seqList.delete(7);
    		for(int i=0;i<seqList.getSize();i++){
    			System.out.print (seqList.getData(i) +"  ");
    		}
    	} 
    }
    


  • 相关阅读:
    如何在Linux下修改Mysql的用户(root)密码
    CentOS 6.x 如何升级 glibc 2.17
    Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
    darkflow测试和训练yolo
    使用 Alibaba 的 Homebrew 镜像源进行加速
    树莓派开启SSH的N种方法
    Linux开启ssh服务
    在Linux中创建静态库.a和动态库.so
    linux下动态链接库(.so)的显式调用和隐式调用
    删除Win10资源管理器中的3D对象/音乐/视频文件夹
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766912.html
Copyright © 2011-2022 走看看