欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

线性表

程序员文章站 2022-04-27 10:37:22
import java.util.Arrays;public class MyArraylist { int[] element;//数组 int size;//线性表实际大小 public MyArraylist() { this.size=0; this.element=new int[4]; } public MyArraylist(int capacity) { this.size=0; thi...
import java.util.Arrays;

public class MyArraylist {
   int[] element;//数组
   int size;//线性表实际大小
    public MyArraylist() {
        this.size=0;
        this.element=new int[4];
    }

    public MyArraylist(int capacity) {
        this.size=0;
        this.element=new int[capacity];
    }

    // 打印顺序表
    public void display() {
        for (int i=0;i<this.size;i++){
            System.out.print(this.element[i]+" ");
        }
        System.out.println();
    }
    //线性表是否满
    public boolean isFull() {
        if (this.size==this.element.length){
            return true;
        }
        return false;
    }
    //扩容
    public void resize( ) {
       this.element= Arrays.copyOf(this.element,2*this.element.length);
    }

    //在 pos 位置新增元素
    public void addPos(int pos, int data) {
       if (pos<0||pos>this.element.length-1){
           System.out.println("插入位置不合法");
           return;
       }
       if (isFull()){
           //System.out.println("线性表已满");
           resize();
       }
       //pos位置后面的所有元素后移
        for (int i=this.size-1;i>=pos;i--){
            this.element[i+1]=this.element[i];
        }
        //插入元素
        this.element[pos]=data;
        this.size++;

    }
    //默认插入到数组的最后
    public void addTail(int data) {
        if (isFull()){
            resize();
        }
        this.element[this.size]=data;
        this.size++;
    }

    // 判定是否包含某个元素
    public boolean contains(int toFind) {
        for (int i=0;i<this.size;i++){
            if (this.element[i]==toFind){
                return true;
            }
        }
        return false;
    }
    // 查找某个元素对应的位置
    public int search(int toFind) {
        for (int i=0;i<this.size;i++) {
            if (this.element[i] == toFind) {
                return i;
            }
        }
        return -1;
    }

    // 获取顺序表长度
    public int size() {
       return this.size;
    }

    // 获取 pos 位置的元素
    public int getPos(int pos) {
       if (pos<0||pos>this.size-1){
           System.out.println("查找位置不合法");
       }
       return this.element[pos];
    }

    // 给 pos 位置的元素修改为 value
    public void setPos(int pos, int value) {
        if (pos<0||pos>this.size-1){
            System.out.println("修改位置不合法");
        }
        this.element[pos]=value;
    }

    //删除第一次出现的关键字key
    public void remove(int key) {
            int index=search(key);
            for (int i=index;i<this.size;i++){
                this.element[i]=this.element[i+1];
            }
            this.size--;
    }
    // 清空顺序表
    public void clear() {
        this.size=0;
    }
    public static void main(String[] args) {
        MyArraylist myArraylist=new MyArraylist(4);
        //指定位置插入元素
        myArraylist.addPos(0,10);
        myArraylist.addPos(1,20);
        myArraylist.addPos(2,30);
        //打印
        myArraylist.display();
        //尾插法
        myArraylist.addTail(40);
        myArraylist.display();
        myArraylist.addTail(50);
        myArraylist.display();
        myArraylist.addPos(2,60);
        myArraylist.display();
        //查找元素
        int index=myArraylist.search(60);
        System.out.println("查找元素的位置:"+index);
        //元素是否存在
        boolean bool=myArraylist.contains(60);
        System.out.println("查找元素是否存在:"+bool);
        //获取指定位置元素
        int val=myArraylist.getPos(2);
        System.out.println("获取指定位置元素:"+val);
        //修改指定位置元素
        myArraylist.setPos(2,70);
        myArraylist.display();
        //线性表大小
        int size=myArraylist.size();
        System.out.println("线性表的大小:"+size);
        //删除元素
        myArraylist.remove(70);
        myArraylist.display();
        //清空线性表
        myArraylist.clear();
        size=myArraylist.size();
        System.out.println("清空线性表后的大小:"+size);
        myArraylist.display();

    }

}
  • 测试用例
    线性表

本文地址:https://blog.csdn.net/qq_45630711/article/details/111877556

相关标签: 数据结构