赞
踩
线性表(Linear List)是由同一类型的数据元素构成的有序序列的线性结构
线性表中元素的个数称为线性表的长度
当一个线性表中没有元素(长度为0)时,称为空表
表的起始位置称表头,表的结束位置称表尾
线性表是 n (≥0)个元素构成的有序序列( a1, a2, ……,an ) ; ai+1称为 ai的直接后继, ai-1为 ai的直接前驱;直接前驱和直接后继反映了元素之间一对一的邻接逻辑关系
首先需要明确的是,线性表的顺序存储不是说存的数据是按照升序或者降序来排列的,而是指用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的初始化
public SeqList(int length){ //定义数组的长度
//初始化一个数组,存储任意类型
this.array =(T[])new Object[length];
//初始化长度
int N = 0;
}
判断线性表是否为空
public boolean isEmpty(){
return N==0;
}
获取线性表中的元素个数
public int length(){
return N;
}
返回线性表中第i个元素的值
public T get(int i){
return array[i];
}
在线性表的第i个元素前插入一个值
现在突然来了个老婆婆想插队做核酸,你出于尊老爱幼你是不是得让她,于是,她插进来了,你需要往后退一个位置,你后面所有的人都要向后退一个位置,她插入队伍后,队伍的总人数增加1人。
public void insert(int i,T t){
//先把i下标及其后面所有的下标往后移动一位
for (int index = N-1; index >i ; index--) {
array[index] = array[index-1];
}
//再把t元素插在原来i下标所处的位置
array[i] = t;
}
删除指定位置元素
比如现在有一对人在排队做核酸,现在4号的女朋友现在让他回家做饭,他突然不做了,那么他后面所有的人都要往前走一个位置,这个队伍的总人数就比之前少1。
public T remove(int i){
//记录i下标的值
T element = array[i];
//让i下标之后的元素全都向前移动一位
for (int index = i;index<N-1;index++){
array[index] = array[index+1];
}
//元素删掉之后,N需要自减
N--;
return element;
}
/** * @author 林中有神君 * @create 2022-10-23 13:48 */ public class SeqList<T> { private T[] array; //定义一个可变长度的数组 private int N; //当前元素个数 public SeqList(int length){ //定义数组的长度 //初始化一个数组,存储任意类型 this.array =(T[])new Object[length]; //初始化长度 int N = 0; } //将线性表清空 public void clear(){ this.N = 0; } //判断当前线性表是否为空 public boolean isEmpty(){ return N==0; } //获取线性表的长度 public int length(){ return N; } //获取指定位置元素 public T get(int i){ return array[i]; } //向线性表中插入元素 public void insert(T t){ array[N++] = t; } //线性表的遍历 public void traverseArray(){ for (int i = 0; i < N; i++) { System.out.print(array[i]+" "); } System.out.println("\n"); } //在i下标前插入一个数 public void insert(int i,T t){ //先把i下标及其后面所有的下标往后移动一位 for (int index = N-1; index >i ; index--) { array[index] = array[index-1]; } //再把t元素插在原来i下标所处的位置 array[i] = t; } //删除指定下标的元素,并返回该元素 public T remove(int i){ //记录i下标的值 T element = array[i]; //让i下标之后的元素全都向前移动一位 for (int index = i;index<N-1;index++){ array[index] = array[index+1]; } //元素删掉之后,N需要自减 N--; return element; } //查找指定元素的下标 public int indexof(T t){ for (int i = 0; i < N; i++) { if(array[i].equals(t)){ return i; } } return -1;//代表没找到 } //测试 public static void main(String[] args) { //初始化线性表 SeqList seqList = new SeqList(10); //插入数据 seqList.insert(1); seqList.insert(10); seqList.insert(12); seqList.insert(7); seqList.insert(81); seqList.insert(24); seqList.insert(36); seqList.insert(8); seqList.insert(9); seqList.insert(14); //获取指定下标的元素 Object obj = seqList.get(5); System.out.println("该下标元素的值为:"+obj); //删除指定下标的元素,并返回该元素 Object rem = seqList.remove(2); System.out.println("删除的元素是:"+rem); //线性表遍历 seqList.traverseArray(); //在i下标前插入一个数 seqList.insert(2,8545); //线性表遍历 seqList.traverseArray(); //获取线性表的长度 System.out.println("线性表长度:"+seqList.length()); //判断线性表是否为空 System.out.println("线性表是否为空:"+seqList.isEmpty()); //清空表 seqList.clear(); System.out.println("清空线性表之后的数组长度:"+seqList.length()); //判断线性表是否为空 System.out.println("线性表是否为空:"+seqList.isEmpty()); } }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。