数据结构-线性表的数组实现-Java
来源:互联网 发布:java两个时间加减法 编辑:程序博客网 时间:2024/05/29 13:49
最近系统的整理了一下数据结构与算法·这门课的知识,由于本科学习编程还是停留在C和汇编上,没有更多相关课程。于是最近自己对着书学习了一遍。我的大语言目标是Java,所以接下来所有内容全部使用Java。
package arryListDemo;public class ArrayList {private final int LEN=8;//定义数组默认长度;private Strategy strategy;//由于不同类型的比较方式不同,所以定义比较方法private int size;//定义线性表中数据元素的个数private Object[] elements;数据元素数组public ArrayList(Strategy strategy){this.strategy=strategy;size=0;elements=new Object[LEN];}public int getSize(){return size;}public boolean isEmpty() {return size==0;}public boolean contains(Object e) {for (int i = 0; i < size; i++) if (strategy.equal(e, elements[i])) return true;return false;}public int indexOf(Object e) {for (int i = 0; i < size; i++) if(strategy.equal(e,elements[i])) return i;return -1;}public void insert(int i,Object e)throws OutOfBoundaryException{if (i<0||i>size) {throw new OutOfBoundaryException("插入的序号超过了现有长度的范围");}if (size>=elements.length)expandSpace();for(int j=size;j>i;j--){elements[j]=elements[j-1];}elements[i]=e;size++;}private void expandSpace() {Object[] ass = new Object[elements.length*2];for (int i = 0; i < elements.length; i++) {ass[i]=elements[i];}elements=ass;}public boolean insertBefore(Object obj,Object e){int i=indexOf(obj);if(i<0) return false;insert(i, e);return true;}public boolean insertAfter(Object obj,Object e) {int i=indexOf(obj);if (i<0) return false;insert(i+1, e);return true;}public Object remove(int i)throws OutOfBoundaryException {if (i<0||i>=size) {throw new OutOfBoundaryException("超过了线性表的范围");}Object obj=elements[i];for (int j = i; j < size-1; j++) {elements[j]=elements[j+1];}elements[size-1]=null;return obj;}public boolean remove(Object e) {int i=indexOf(e);if (i<0) return false;remove(i);return true;}public Object replace(int i,Object e) throws OutOfBoundaryException{if(i<0||i>=size)throw new OutOfBoundaryException("序号超过了范围");Object obj=elements[i];elements[i]=e;return obj;}public Object get(int i)throws OutOfBoundaryException{if(i<0||i>=size) throw new OutOfBoundaryException("超过了界限");return elements[i];}}以上每个方法的名字都标示了该方法的目的,所以就不一一备注。下面给出上面自定义异常的代码:
package arryListDemo;public class OutOfBoundaryException extends RuntimeException{public OutOfBoundaryException(String err){super(err);}}
0 0
- 数据结构-线性表的数组实现-Java
- java数据结构:线性表之数组实现
- 【数据结构】线性表(数组实现)
- 典型数据结构:线性表(基于数组的实现)
- 【java】数组线性表的实现
- 数据结构 线性表JAVA实现
- 数据结构-Java实现线性表
- 复习(数据结构:java):线性表(数组):接口的写法
- 简单数据结构-数组实现线性表
- 1.数据结构--线性表之数组实现
- 数据结构之线性表(数组实现)
- java 数组实现线性表
- [图解数据结构之Java实现](1) --- 线性表之数组实现
- 数据结构:线性表的顺序存储--Java实现
- 数据结构学习----线性表(Java版的实现)
- 数据结构学习----线性表的链式表示(Java实现)
- Java数据结构——线性表的顺序存储实现
- java实现数据结构中线性表的顺序存储
- ubuntu caffe 下安装nvidia digits排错
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- Linux input 子系统事件类型分析 muti-touch-protocol.txt
- 深度分析Linux下双网卡绑定七种模式
- Mac OS配置JDK环境变量
- 数据结构-线性表的数组实现-Java
- GNU C 9条扩展语法
- Ubuntu 15 安装搜狗输入法
- owap-zap之截断代理
- Codeforces 120I
- 深度学习框架 Digits 3.0 安装运行
- 第三天!神奇的物理引擎!
- easyui的easyui-textbox、easyui-combobox 类
- C#中wpf使用Devexpress画图:柱状图,饼状图,散点图,曲线图