线性表java实现之顺序存储源码
源码:
class SequenceList<T>{
private int size=0;//表大小
private int max_length;//表长
private final int default_length = 20;//默认长度
private Object[] o;
//初始化
public SequenceList(){
max_length = default_length;
o = new Object[max_length];
}
public SequenceList(int init_length,T data){
max_length = init_length;
o=new Object[max_length];
o[0]=data;
size++;
}
//返回长度
public int getLength(){
return max_length;
}
//返回指定索引处值
/**
* @param location
* @return
*/
@SuppressWarnings("unchecked")
public T getValue(int location){
return (T) o[location];
}
//返回指定值的位置
public int getLocate(T data){
int tag=size-1;
while(tag>0){
if(o[tag].equals(data)){
break;
}
tag--;
}
return tag;
}
//插入数据
public void insert(T data,int location){
if(size > max_length-1){
throw new IndexOutOfBoundsException("超过线性表最大长度");
}else{
int flag = size;
while(flag>location){
o[flag] = o[flag-1];
flag--;
}
o[flag] = data;
size++;
}
}
public void add(T data){
insert(data, size);
}
//删除数据
public T delete(int location){
@SuppressWarnings("unchecked")
T old_value = (T) o[location];
if(location<0 || location > size-1){
throw new IndexOutOfBoundsException("不再线性表范围");
}else{
while(location<size-1){
o[location] = o[location+1];
location++;
}
o[--size] = null;
}
return old_value;
}
//判断是否空表
public boolean isEmpty(){
if(size>0)
return false;
else
return true;
}
//清空表
public void clear(){
while(--size>=0){
o[size] = null;
}
}
@Override
public String toString() {
if(size <0 )
return "[]";
else{
StringBuffer sb = new StringBuffer("[");
int flag = 0;
while(flag < size){
sb.append(o[flag].toString()+",");
flag++;
}
return sb.delete(sb.length()-1, sb.length()).toString()+"]";
}
}
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj == this){
return true;
}
if(obj instanceof SequenceList){
@SuppressWarnings("unchecked")
SequenceList<T> s = (SequenceList<T>) obj;
if(s.size == size){
int flag=0;
while(o[flag] == s.o[flag]){
flag++;
}
if(flag == size-1){
return true;
}
}
}
return false;
}
}
转载于:https://www.cnblogs.com/mapleyuan/archive/2013/04/06/3002458.html
线性表java实现之顺序存储源码相关推荐
- java线性表源代码_线性表java实现之顺序存储源码
源码: class SequenceList{ private int size=0;//表大小 private int max_length;//表长 private final int defau ...
- Java HashSet和HashMap源码剖析
转载自 Java HashSet和HashMap源码剖析 总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说Ha ...
- Java智慧校园系统源码,智慧学校源码 +小程序+电子班牌
Java智慧校园系统源码 智慧学校源码 小程序+电子班牌 有演示,可正常上线运营+可授权 开发环境:Java+springboot+vue+element-ui+mysql 一款集智慧教学.智慧教务. ...
- java企业人事管理系统源码_基于Java+SSH的企业人事管理系统
需求分析 基于Spring, Struts2, Hibernate,Java 实现一个企业人事管理系统, 实现 权限管理.人事管理.考勤管理.数据统计等.主要功能为签到.请假.离岗及数据汇总的功能 本 ...
- ssh+mysql实现的Java web论坛系统源码
今天给大家来演示一下一款有spring+struts2+hibernate+mysql实现的Java web论坛系统源码,本系统功能类似与csdn论坛,用户发帖时可以设置积分,当结帖时可以选择给评论的 ...
- 死磕 java集合之ArrayDeque源码分析
问题 (1)什么是双端队列? (2)ArrayDeque是怎么实现双端队列的? (3)ArrayDeque是线程安全的吗? (4)ArrayDeque是有界的吗? 简介 双端队列是一种特殊的队列,它的 ...
- Java Review - LinkedHashMap LinkedHashSet 源码解读
文章目录 Pre 概述 数据结构 类继承关系 构造函数 方法 get() put() remove() LinkedHashSet 使用案例 - FIFO策略缓存 Pre Java Review - ...
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)
课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)
课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...
最新文章
- linux qt 生成word,Qt 生成word、pdf文檔
- 一元操作符“++”,“- ” 之强制转换数值
- 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
- JS 语法糖 0 —— 解构
- Beta 冲刺 (6/7)
- python文件系统监控_简单了解Python下用于监视文件系统的pyinotify包
- SpringSecurity实战(八)-通用第三方登陆-自定义认证配置实现
- 基于阿里云盘的文件分享系统
- css给div四角添加效果
- 201671030116宋菲菲 词频统计软件项目报告
- 生活-痘痘告诉你,身体哪里生病了
- metamask 最新版官方版
- 阿里大促,「技术负责人」如何做技术保障?
- GMT所提供的所有命令和其功能
- Proximal Algorithms--Moreau-Yosida regularization
- mtcnn系列-2.数据集讲解
- SpringBoot 日志系列:(二)日志配置
- Flex form 提交list数据表单
- 饿了么内部员工看“饿了么危矣”
- TIM输出比较——PWM
热门文章
- filezilla 设置服务器_服务器ftp软件,五款服务器ftp软件的使用方法
- html5 websocket与c,打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
- struts2登录注册示例_Struts 2动作示例教程
- 工作队列 ( workqueue )
- Java基础:把对象作为参数
- Electron —— Cannot find module ‘index.js’
- xxl_job springboot改造
- mysql homedir迁移
- 《面向模式的软件体系结构1--模式系统》读书笔记(7)--- 通信
- JAVA类加载的委托模型