数据结构-线性表的数组实现-Java
2016-12-25 13:36
851 查看
最近系统的整理了一下数据结构与算法·这门课的知识,由于本科学习编程还是停留在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); } }
相关文章推荐
- java数据结构——Hash的实现(数组) 线性探测的方法解决冲突
- java数据结构:线性表之数组实现
- 典型数据结构:线性表(基于数组的实现)
- 数据结构(java语言描述)-- 表的简单数组实现
- 数据结构Java实现02----线性表与顺序表
- Java 数据结构数组实现(增删改查)
- 数据结构笔记--栈的总结及java数组实现简单栈结构
- 数据结构队列的java实现,包括线性和链式两种方式
- 数据结构Java实现——④数组——>稀疏矩阵三元组顺序存储
- 数据结构Java实现02----线性表与顺序表
- 数据结构Java实现——④数组——>稀疏矩阵十字链表存储法
- java数据结构之多维数组实现
- 数据结构:线性表的链式存储(单向链表)--Java实现
- 数据结构学习----线性表的链式表示(Java实现)
- 数据结构和算法 C/C++ Java 和 C# 版 - (2)线性表 精准表述 实现
- 数据结构复习:队列-Java数组实现
- 数据结构:线性表的链式存储(双向链表)--Java实现
- 数据结构学习----线性表的链式表示之循环单链表(Java实现)
- 数据结构学习----线性表的链式表示之循环双链表(Java实现)
- Java 数据结构之数组的操作三:实现各种排序方法