java顺序表

线性表

线性表:

线性表(linear list) 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储 时,通常以数组和链式结构的形式存储。

常见的线性表: 顺序表、链表、栈、队列、字符串…

顺序表

顺序表: 基于数组来实现

java顺序表_第1张图片
顺序表的属性: usedSize、数组 、构造方法、数组的容量(CAPACITY)
顺序表物理上的内存、逻辑上内存都是连续的 。
顺序表一般分为:
1.静态顺序表:使用固定长数组存储。适用于确定知道需要存多少数据的场景。
2.动态顺序表:使用动态开辟的数组存储。可以根据需要动态分配空间大小。
顺序表缺点:内存浪费

有关于顺序表的部分功能实现
  1. 打印顺序表
    public void dispaly(){
       for (int i = 0; i < this.usedSize; i++) {
           System.out.print(this.elem[i] + " ");
       }
       System.out.println();
    }
  1. 在 pos 位置新增元素
public boolean isFull(){
  if(this.usedSize==this.elem.length){
     return true;
  }
  return false;
}
public void add(int pos, int data) {
    if(isFull()) {
        this.elem = Arrays.copyOf(this.elem, this.elem.length*2);
    }
    //1、pos是否合法
    if(pos < 0 || pos > this.usedSize) {
        throw new IndexOutOfBoundsException("pos位置不合法");
        //System.out.println("pos位置不合法");
        //return;
    }
    //2、挪数据
    for (int i = this.usedSize-1; i >= pos ; i--) {
        this.elem[i+1] = this.elem[i];
    }
    //3、插入数据
    this.elem[pos] = data;
    //4、usedSize++
    this.usedSize++;
}
  1. 判定是否包含某个元素
public boolean contains(int toFind) {
    for (int i = 0; i < this.usedSize; i++) {
        if(this.elem[i] == toFind){
            return true;
        }
    }
    return false;
}
  1. 查找某个元素对应的位置
private boolean isEmpty() {
    return this.usedSize == 0;
}
public int search(int toFind) {
    if(isEmpty()) {
        System.out.println("顺序表为空");
        return -1;
    }
    for (int i = 0; i < this.usedSize; i++) {
        if(this.elem[i] == toFind){
            return i;
        }
    }
    return -1;
}
  1. 获取 pos 位置的元素
public int getPos(int pos) {
    if(pos < 0 || pos > this.usedSize) {
        return -1;
    }
    return this.elem[pos];
}
  1. 给 pos 位置的元素设为 value
public void setPos(int pos,int value){
   if(pos<0||pos>this.usedSize){
       this.elem[pos]=value;
   }
}
  1. 删除第一次出现的关键字key
public void remove(int toRemove) {
    //1、查找toRemove的下标
    int index = search(toRemove);
    if(index == -1) {
        System.out.println("没有你要删除的数字!");
        return;
    }
    //2、删除   i
    for (int i = index; i < this.usedSize-1 ; i++) {
        this.elem[i] = this.elem[i+1];
    }
    this.usedSize--;
}
  1. 获取顺序表长度
public int size() {
    return this.usedSize;
}
  1. 清空顺序表
public void clear() {
    this.usedSize = 0;
}

你可能感兴趣的:(java顺序表)