Java写数据结构01
线性表
定义
线性表是最常用且最简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列。在稍复杂的线性表中,一个数据元素可以有若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称文件。(为什么称为线性表,是因为符合线性结构:结构中的数据元素存在一个对一个的关系。而常见的非线性结构有:树,广义表,多维数组等等,他们都不是一对一的关系)
1.线性表的顺序表示
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。假设线性表的每个元素需占用L个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系:
LOC(ai+1) = LOC(ai) + L
一般说来,线性表的第i个数据元素ai的存储位置为:
*LOC(ai) = LOC(a1) + (i-1)L
(第i个存储位置就是第一个存储位置加上之间占用的(i-1)*L个存储单元)
线性表的这种机制称作线性表的顺序存储结构或顺序映像,通常,称这种存储结构的线性表为顺序表。换句话说,以元素在计算机内物理位置相邻来表示线性表中数据元素之间的逻辑关系。
代码表示:(用数组的方法)
public class SelfTest {
private Object[] listItem;//存储位置
private int curLen;//长度
private int maxSize;//最大容量
//1.顺序表的初始化
SelfTest(int maxSize ){
this.maxSize = maxSize;
this.listItem = new Object[maxSize];
this.curLen = 0;
}
//2.从顺序表依次插入值
public void insert(Object data){
if (curLen==maxSize){
//每次插完都会加一直到满足最大容量
System.out.println("顺序表已满");
}else{
listItem[curLen] = data;
curLen++;//加完后要改变顺序表长度
}
}
public int getCurLen(){
return this.curLen;
}
//3.顺序表指定位置插入
public void insertS(int index,Object data){
if (curLen == maxSize){
System.out.println("数组已满无法插入");
}else{
for (int i=curLen;i>index;i--){
listItem[i] = listItem[i-</