`
javawangzilong
  • 浏览: 57110 次
  • 性别: 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 
分享到:
评论

相关推荐

    北京化工大学842数据结构2021年考研专业课初试大纲.pdf

    ### 数据结构知识点解析 #### 一、概述 北京化工大学为参加软件工程、计算机科学与技术、计算机应用、信息科学与技术及信息工程等专业的硕士研究生入学考试的学生提供了《数据结构》科目的考试大纲。本大纲旨在...

    空闲磁盘存储空间的管理:简单方法

    将连续的磁盘块分成组,组内的块形成顺序表,组与组之间通过链表连接。当请求的块数超过单个组的最大容量(如MAXGROUP为20)时,创建新的组。分配和回收内存块的函数分别是distribute()和recycle()。 在实际的开发...

    自考计算机软件基础(二)复习资料(概念)2013.11.25参考.pdf

    计算机软件基础(二)是高等教育自学考试中的一门重要课程,涵盖了计算机系统的基本概念和数据结构的核心知识。以下是对这些知识点的详细阐述: 1. 裸机与虚拟机:裸机是指仅由处理器、存储器和输入输出设备组成的...

    自考计算机软件基础(二)复习资料(概念)2013.11.25.pdf

    计算机软件基础(二)是高等教育自学考试...通过深入理解这些概念和数据结构,我们可以更好地设计和实现高效的计算机程序,提高计算机系统的性能和用户体验。学习计算机软件基础对于进一步探索计算机科学和技术至关重要。

    古典密码算法实验报告 使用java编写的古典密码算法(替代密码算法和置换密码算法)

    Java作为一种面向对象的编程语言,提供了丰富的数据结构和算法支持,使得实现这些古典密码算法变得相对简单。例如,可以使用`StringBuilder`或`StringBuffer`进行字符串操作,使用`Character`类处理字符,以及利用...

    自考计算机软件基础(二)概念.pdf

    10. 线性表和链表:线性表是具有线性逻辑关系的数据元素集合,链表是线性表的一种实现方式,其中顺序表和链表各有优缺点,如顺序表随机访问效率高但插入删除成本高,而链表插入删除效率高但随机访问不便。...

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

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

    算法与程序设计

    代码生成是模型驱动程序设计的核心优势之一,通过预定义的模板和规则,自动生成代码框架,大幅减少手工编码的工作量,提升开发效率和代码一致性。 #### 实验五:算法程序的综合设计与实现 **知识点8:综合设计与...

    技术笔记(第一部分整理)

    数组是一种存储固定大小的同类型元素的数据结构。可以通过索引访问数组中的每个元素,索引从0开始。 ##### 方法 方法是一段被命名的代码块,可以接受参数并返回结果。定义方法时需指定其返回类型、名称及参数列表。...

    剑指offer纪念版纯手写源码

    这份压缩包中的源码,由作者手工编写,旨在帮助学习者深入理解算法和数据结构,提升编程技能,从而更好地应对技术面试。 在《剑指Offer》这本书中,作者通过一系列精心设计的面试题,涵盖了计算机科学的基础知识,...

    广工代码之美课程设计

    - 定义了系统中用于存储和管理数据的关键数据结构,如乘客信息表、车次表等。 - **核心算法**: - 包括用于处理系统业务逻辑的核心算法,例如查询算法、排序算法等。 - **系统流程图**: - 通过流程图的形式展示...

    读大数据量的XML文件的读取问题

    使用链表存储数据的另一个好处是,可以在链表的基础上实现其他数据结构,比如二叉搜索树、哈希表等,以进一步优化查询性能。例如,如果链表中的数据按照一定的顺序组织,就可以进行二分查找,大大加快查询速度。如果...

Global site tag (gtag.js) - Google Analytics