/**
* 线性表的顺序存储结构
*/
public class SqList {
int[] data;
int length;
public SqList(int leng, int length) {
this.data = new int[leng];
this.length = length;
}
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = data;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
@Override
public String toString() {
return "SqList{" +
"data=" + Arrays.toString(data) +
", length=" + length +
'}';
}
//初始化顺序表
public void initList() {
for (int i = 0; i < this.length; i++) {
this.data[i] = 99;
}
}
//根据给出的位序获取数据元素
public int getElem(int offset) {
//如果给出的位序小于1或者大于当前表长度 报错
if (offset < 1 || offset > this.length) {
return 0;
}
int elem = this.data[offset];
return elem;
}
//根据给出的位序和指定的元素插入元素
public int insertElem(int offset, int value) {
//如果给出的位序小于1或者大于当前表长度 报错
if (offset < 1 || offset > this.length) {
return 1;
}
if (offset <= this.length) {
for (int k = this.length - 1; k >= offset - 1; k--) {
this.data[k + 1] = this.data[k];
}
}
this.data[offset - 1] = value;
this.length++;
return 0;
}
//根据给出的位序删除元素
public int deleteElem(int offset) {
if (offset < 1 || offset > this.length) {
return 1;
}
if (offset < this.length) {
for (int k = offset - 1; k < this.length; k++) {
this.data[k] = this.data[k + 1];
}
}
this.length--;
return 0;
}
}
/**
* 有关顺序存储线性表的操作
* 初始化
* 取元素
* 插入元素
* 删除元素
*/
public class SqListOper {
public static void main(String[] args) {
//定义一个顺序表
SqList sqList = new SqList(10, 5);
//顺序表的初始化
sqList.initList();
//根据位序取数据
int elem = sqList.getElem(4);
System.out.println(elem);
System.out.println(sqList);
//根据位序和指定元素插入数据
int i = sqList.insertElem(3, 11);
System.out.println(i);
System.out.println(sqList);
//根据位序删除元素
int i1 = sqList.deleteElem(2);
System.out.println(i1);
System.out.println(sqList);
}
}
线性表顺序存储的初始化/取指定元素/指定位序插入指定元素/指定位序删除元素代码。
因为顺序存储的内存地址是连续的,所以查找元素的时间复杂度为O(1),这种结构称之为随机存取结构。
在元素的插入和删除操作中,平均时间复杂度都是O(n),所以顺序存储的线性表不适合数据变动较多的场景,适合一次写入多次查找。
暂时记录到这里--------------------------------------------------------------------------------------------------