`
javawangzilong
  • 浏览: 55204 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

java数据结构之顺序表手工实现

阅读更多
以下声明SeqList类表示顺序表,element是一个存放线性表的一位数组,元素类型为T;
len表示顺序表的长度;

public class SeqList<T> {
	
	private Object[] element;				//对象数组,设置成私有成员
	private int len;						//顺序表的长度,元素的个数
	
	public SeqList(int size){				//构造方法,创建容量为size的空表
		this.element = new Object[size];
		this.len = 0;
	}
	public SeqList(){this(64);}				//seqList构造方法,创建默认的空表
	
	public boolean isEmpty(){return this.len == 0;}			//判断顺序表是否为空
	
	public int length(){					//返回顺序表的长度
		return this.len;
	}
	
	public T get(int i){					//返回顺序表第i个位置的值
		if(i>=0&&i<this.len){
			return (T)this.element[i];
		}
		return null;
	}
	
	public void set(int i,T x){				//设置顺序表第i个位置的值
		if(x == null)
			return;
		if(i>=0&&i<this.len)
			this.element[i] = x;
		else 
			throw new IndexOutOfBoundsException(i+"");			//抛出序号越界异常
	}
	
	public String toString(){				
		String str = "";
		for(int i=0;i<this.len;i++){
			str += this.element[i].toString()+" ";
		}
		return str;
	}
	
	public void insert(int i,T x){				//插入x作为第i个元素
		if(x == null)
			return;
		if(this.len == element.length){			//若数组满,则扩充顺序表容量
			Object[] temp = this.element;
			this.element = new Object[temp.length*2];
			for(int j=0;j<temp.length;j++){
				this.element[j] = temp[j];
			}
		}
		if(i<0)
			i=0;
		if(i>0)
			i=this.len;
		for(int j=this.len-1;j>=i;j--){
			this.element[j+1] = this.element[j];
		}
		this.element[i] = x;
		this.len++;
	}
	
	public T remove(int i){					//删除第i个元素,返回删除的值
		if(this.len==0||i<0||i>=this.len)
			return null;
		T old = (T)this.element[i];
		for(int j=i;j<this.len-1;j++){
			this.element[j] = this.element[j+1];
		}
		this.len--;
		return old;
	}
	
	public static void main(String[] args){
		SeqList<String> seq = new SeqList();
		seq.insert(0, "1");
		seq.insert(1, "2");
		seq.insert(2, "3");
		System.out.print(seq.toString());
	}
}


本小龙初学java,若有什么不对的地方,请给位大神指教;

1 2 3 
分享到:
评论

相关推荐

    java 面试题 总结

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    超级有影响力霸气的Java面试题大全文档

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    springmybatis

    mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之...

    ssh(structs,spring,hibernate)框架中的上传下载

    首先数据表中的Blob字段在Java领域对象中声明为byte[]类型,而非java.sql.Blob类型。  2.数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即...

    asp.net知识库

    根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的存储过程 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    ORACLE9i_优化设计与系统调整

    §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §1.3 数据块、区间和段 28 §...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    相对的,XML则没有固定的标记,XML不能描述网页具体的外观,内容,它只是描述内容的数据形式和结构。 这是一个质的区别:网页将数据和显示混在一起,而XML则将数据和显示分开来。 我们看上面的例子,在myfile.htm...

    Android高级编程--源代码

     由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以...

Global site tag (gtag.js) - Google Analytics