浙江大学陈越数据结构
线性结构
线性表的实现
一. 线性表的抽象数据类型(ADT)描述
类型名称:线性表(List)(由同类型数据元素构成的有序序列的线性结构)
=> 表中的元素个数称为线性表的长度
=>线性表中没有元素时,称为空表
=>表起始位置称为表头,表结束为止称为表尾
1.数据对象集: 线性表示n(>=0)个元素构成的有序序列(a1, a2, ..., an)
2.操作集:线性表 L 属于 List, 整数i表示位置, 元素X 属于 ElemmentType, 线性表的基本操作主要有:
①初始化一个空线性表(这里以ArrayList为例)(Java)
List<T> list = new ArrayList<>();
②根据位序K, 返回相应元素
int i = 10;
List<String> list = new ArrayList<>();
list.get(i);
③ 在线性表中查找X第一次出现的位置
④插入操作,在位序i前面插入一个新元素
⑤删除指定位序i的元素
⑥返回线性表的长度
二. 线性表的顺序存储实现:
1. 利用数组的连续存储空间顺序存放线性表的各个元素
①初始化方法
②查找方法
③插入方法
④删除方法
⑤get方法
public class List{
private int last;
private int length;
private Object[] data = new Object[length];
public Object[] makeEmpty(int length){
this.length = length;
Object[] objects = new Object[length];
this.data = objects;
this.last = -1;
return data;
}
public int find(Object element){
for(int i = 0; i < last; i ++){
if(element.equals(data[i]))
return i;
}
return -1;
}
public void insert(int i, Object element){
if(i < 0 || i > last){
System.out.println("不合法操作");
return;
}
else if(last == data.length){
Object[] newList = new Object[2 * length];
System.arraycopy(data, 0, newList, 0, data.length);
data = newList;
}
for(int j = last; j > i; j--){
data[j] = data[j-1];
}
data[i] = element;
last++;
}
public Object get(int i ){
if(i >= 0 && i <= last){
return data[i];
}
return null;
}
public void delete(int i){
if(i < 0 && i > last){
return;
}
for(int j = i; j < last; j++){
data[j+1] = data[j];
}
last--;
}
}
以上是个人的实现,有问题的烦请dalao指出qwq(大一学生,以此来记录学习数据结构的一些心得)