java语言实现顺序表
2015-04-14 16:49
363 查看
/**
* 说明:这是一个用数组实现的顺序表,实现了基本的增、删、查操作。
*/
public class SequenList {
public int length=10;//初始化顺序表大小为10
private int cur_index;//当前插入位置
private Object[] seqList;//顺序表数据存放处
/**
* @author weixm
* 说明:构造函数,用来初始化顺序表。此处用私有方法来对数据进行初始化。
*/
public SequenList(){
initList();
}
/**
* @author weixm
* 初始化顺序表
*/
private void initList(){
this.seqList=new Object[length];
}
/**
* @author weixm
* @param obj
* 说明:此方法用来在顺序表中最后位置添加新数据,当数据添加位置超过了数组允许大小时,
* 重新分配内存空间。并且,每加一条数据,List的当前插入位置自增“1”。
*/
public void add(Object obj){
if(length>0){
if(cur_index<(length-1)){
seqList[cur_index]=obj;
cur_index++;
}else{
resizeList(seqList);
seqList[cur_index]=obj;
cur_index++;
}
}else{
System.err.print("The sequences are not initialed properly ! ");
}
}
/**
* @author weixm
* @param index
* @param obj
* 说明:此方法用来在数组的任意位置添加一个新数据。如果任意插入的数据位置刚好是最后一个元素
* 则直接调用 add(Object obj) 方法,如果添加的数据超出了原始数据的边界值,则List
* 会自动对空间进行扩充。因此,允许添加数据的当前位置超出数据边界。但是每次插入的数据
* 索引大小不能超过 length*3/2+1 ,否则,系统会抛出数组越界异常。
*/
public void add(int index,Object obj){
if(index==cur_index+1){
add(obj);
}else{
int old_len=length;
if(index>length-1){
resizeList(seqList);
}
System.arraycopy(seqList,index,seqList,index+1,old_len-index);
seqList[index]=obj;
cur_index=index;
}
}
/**
* @author weixm
* @param obj
* @return
* 说明:此方法用于进行元素查找,如果要查找的元素在数据中存在,则返回数据所在位置,如果
* 元素在数据中没有找到,则直接返回 -1 。
*/
public int findElement(Object obj){
int find_index=-1;
for(int i=0;i<length;i++){
if(obj.equals(seqList[i])){
find_index=i;
}
}
return find_index;
}
/**
* @author weixm
* @param index
* @return
* 说明:此方法用来得到某个确定位置的元素。
*/
public Object get(int index){
return seqList[index];
}
/**
* @author weixm
* @param seqList_low
* 说明:重新划分并扩充数据所占内存空间,具体扩充方式为: length*3/2+1 。
*/
public void resizeList(Object[] seqList_low){
int resize=length*3/2+1;
Object[] seqList_upp=new Object[resize];
System.arraycopy(seqList_low,0,seqList_upp,0,length);
seqList=seqList_upp;
length=resize;
}
* 说明:这是一个用数组实现的顺序表,实现了基本的增、删、查操作。
*/
public class SequenList {
public int length=10;//初始化顺序表大小为10
private int cur_index;//当前插入位置
private Object[] seqList;//顺序表数据存放处
/**
* @author weixm
* 说明:构造函数,用来初始化顺序表。此处用私有方法来对数据进行初始化。
*/
public SequenList(){
initList();
}
/**
* @author weixm
* 初始化顺序表
*/
private void initList(){
this.seqList=new Object[length];
}
/**
* @author weixm
* @param obj
* 说明:此方法用来在顺序表中最后位置添加新数据,当数据添加位置超过了数组允许大小时,
* 重新分配内存空间。并且,每加一条数据,List的当前插入位置自增“1”。
*/
public void add(Object obj){
if(length>0){
if(cur_index<(length-1)){
seqList[cur_index]=obj;
cur_index++;
}else{
resizeList(seqList);
seqList[cur_index]=obj;
cur_index++;
}
}else{
System.err.print("The sequences are not initialed properly ! ");
}
}
/**
* @author weixm
* @param index
* @param obj
* 说明:此方法用来在数组的任意位置添加一个新数据。如果任意插入的数据位置刚好是最后一个元素
* 则直接调用 add(Object obj) 方法,如果添加的数据超出了原始数据的边界值,则List
* 会自动对空间进行扩充。因此,允许添加数据的当前位置超出数据边界。但是每次插入的数据
* 索引大小不能超过 length*3/2+1 ,否则,系统会抛出数组越界异常。
*/
public void add(int index,Object obj){
if(index==cur_index+1){
add(obj);
}else{
int old_len=length;
if(index>length-1){
resizeList(seqList);
}
System.arraycopy(seqList,index,seqList,index+1,old_len-index);
seqList[index]=obj;
cur_index=index;
}
}
/**
* @author weixm
* @param obj
* @return
* 说明:此方法用于进行元素查找,如果要查找的元素在数据中存在,则返回数据所在位置,如果
* 元素在数据中没有找到,则直接返回 -1 。
*/
public int findElement(Object obj){
int find_index=-1;
for(int i=0;i<length;i++){
if(obj.equals(seqList[i])){
find_index=i;
}
}
return find_index;
}
/**
* @author weixm
* @param index
* @return
* 说明:此方法用来得到某个确定位置的元素。
*/
public Object get(int index){
return seqList[index];
}
/**
* @author weixm
* @param seqList_low
* 说明:重新划分并扩充数据所占内存空间,具体扩充方式为: length*3/2+1 。
*/
public void resizeList(Object[] seqList_low){
int resize=length*3/2+1;
Object[] seqList_upp=new Object[resize];
System.arraycopy(seqList_low,0,seqList_upp,0,length);
seqList=seqList_upp;
length=resize;
}
相关文章推荐
- (Java)单链表Java语言顺序结构实现(数据结构三)
- (Java)单链表Java语言顺序结构实现(数据结构三)
- 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
- 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
- 三元组顺序结构实现稀疏矩阵相加,行序优先(Java语言描述)
- 三元组顺序结构实现稀疏矩阵相加,行序优先(Java语言描述)
- java语言实现顺序表
- 给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序(矩阵连乘最优顺序Java语言实现
- 顺序查找的java、python、go语言的实现
- Java语言实现的扫雷游戏(一)
- 哲学家就餐问题 Java语言实现
- 合并有序数组的实现(java与C语言)
- 数据结构(Java语言)——BinaryHeap简单实现
- 【数据结构】之顺序表(Java语言描述)
- java语言基础——实现int类型数组元素拷贝
- java语言实现:写一个函数,使字符串倒序
- java语言实现:杨辉三角形
- java语言实现:利用递归方法求n!
- 数据结构-链表 JAVA语言实现
- java实现顺序栈