顺序表的实现
来源:互联网 发布:论文流程图画图软件 编辑:程序博客网 时间:2024/05/29 19:16
顺序表的优点:⑴无需为表示表中元素之间的逻辑关系而增加额外的存储空间;
⑵随机存取:可以快速地存取表中任一位置的元素顺序表的缺点:⑴插入和删除操作需要移动大量元素;
⑵表的容量难以确定,表的容量难以扩充;
⑶造成存储空间的碎片。自己手动写的顺序表代码:import java.util.NoSuchElementException;public class SquenceList<Type> { private static final int DEFAULT_CAPACITY=10; private Type[] elements; private int size; public SquenceList(){ size = DEFAULT_CAPACITY; elements = (Type[])new Object[DEFAULT_CAPACITY]; } public SquenceList(int size){ this.size = size; elements = (Type[]) new Object[size]; } public int getSize(){ return this.size; } public void clear(){ this.size=0; elements = (Type[])new Object[this.size]; } public boolean isEmpty(){ return size==0; } public Type getByIndex(int index){ if (index<0||index>=size){ throw new ArrayIndexOutOfBoundsException(); } else{ return elements[index]; } } public int getIndex(Type type) { for (int i = 0; i < size; i++) { if (elements[i].equals(type)) {//Searching by traversal temporarily return i; } } throw new NoSuchElementException(); } public void ensureCapacity(int size){ if(size<=this.size){ return; } else { Type[] old = elements; elements = (Type[]) new Object[size]; for (int i = 0;i<this.size;i++){ elements[i]=old[i]; } } } public void trimToSize() { ensureCapacity(size); } public void add(int index, Type x){ if( index<0 || index>size ) throw new ArrayIndexOutOfBoundsException(); if(elements.length==size) ensureCapacity(size*2+1); for (int i=size; i>index; i--) elements[i]=elements[i-1]; elements[index]=x; size++; } public boolean add(Type x){ add(size, x); return true; }public void add(int index, Type x){
if(index<0 || index>size )
throw new ArrayIndexOutOfBoundsException();
if(elements.length==size)
ensureCapacity(size*2+1);
for(int i=size; i>index; i--)
elements[i]=elements[i-1];
elements[index]=x;
size++;
}
public boolean add(Type x){
add(size,x);
return true;
}
}对于插入数据操作的分析:假设在长度为n 的线性表中任意一个位置插入一个元素的概率是相等的,则所需移动元素次数的期望值为n/2删除一个元素时为(n-1)/2
阅读全文
1 0
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 顺序表的实现
- 漫步最优化三十——非精确线搜索
- R语言data.table包的使用
- GitHub图文教程(一)新建仓库、代码上传、删除仓库
- java常用类库---国际化程序
- Java基础练习(3)
- 顺序表的实现
- 【笔记】芝麻分的计算维度
- 第四周 项目4
- scala基础-数组
- caffe与python学习笔记
- 带你真正认识Linux 系统结构
- 创建类Person和对象
- 命令模式
- 麻将算法(五)胡牌之M选N