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) +"  ");
    		}
    	} 
    }
    


  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766912.html
Copyright © 2011-2022 走看看