• 2、顺序表的实现(java代码)


    1、这里实现了简单的顺序表的,为空判断、是否已满判断,插入、删除,查询元素下标等功能

    public class Linear_List {
        private int[] arr;      //用来保存数据
        private int size;          //实际存入数据占用空间大小
    
        /**
         * 初始化线性表,声明数组大小
         *
         * @param initial_size:数组大小
         */
        public Linear_List(int initial_size) {
            if (initial_size >= 0) {
                this.arr = new int[initial_size]; //初始化数组
                this.size = 0;       //初始下标为0
            } else {
                System.out.println("你给的初始值: " + initial_size + "不能小于0");
            }
        }
    
        /**
         * 判断线性表满没有
         *
         * @return :真则满,假未满
         */
        public boolean isFull() {
            if (this.size == arr.length) {
                return true;
            } else {
                return false;
            }
        }
    
        /**
         * 判断线性表是否为空
         *
         * @return :真则空,假未空
         */
        public boolean isEmpty() {
            if (this.size == 0) {
                return true;
            } else {
                return false;
            }
        }
    
    
        /**
         * 1、增加元素
         *
         * @param value :要插入的数据
         * @param index :插入的位置
         */
        public void addData(int value, int index) {
            if (isFull()) {
                System.out.println("线性表已满");
            } else if (index < 0 || index > arr.length) {
                System.out.println("插入的下标越界,您要插入的下标为:" + index);
            } else {
                for (int i = this.size - 1; i >= index; i--) {
                    arr[i + 1] = arr[i];  //依次后移
                }
                arr[index] = value;
                this.size++;  //数组元素下标增加
            }
        }
    
        /**
         * 2、删除元素
         *
         * @param value :要删除的数
         */
        public void deleteData(int value) {
            int pos = find(value);
            if (pos == -1) {
                System.out.println("您要找的 " + value + " 元素不在该线性表中");
            } else {
                System.out.println("您要删除的 " + value + " 元素下标为:" + pos);
            }
    
            for (int j = pos; j <= this.size - 2; j++) { //这里-2,是因为找到的元素下标,要将后一个的冲掉前一个,会增加一个
                arr[j] = arr[j + 1];
            }
            this.size--;
        }
    
        /**
         * 3、查找元素下标
         * @param value :所要查找的元素
         * @return :返回下标
         */
        public int find(int value) {
            int pos = -1;
            if (isEmpty()) {
                System.out.println("线性表已空,没有可删除元素");
            } else {
                for (int i = 0; i <= this.size - 1; i++) {
                    if (arr[i] == value) {
                        pos = i;
                    }
                }
            }
            return pos;
        }
    
        /**
         * 打印线性表元素
         */
        public void print() {
            for (int i = 0; i <= this.size - 1; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            //初始化顺序表
            Linear_List linear_list = new Linear_List(10);
            for (int i = 0; i < 10; i++) {
                linear_list.addData(i + 1, i);
            }
            linear_list.print();
    
            //删除
            linear_list.deleteData(5);
            linear_list.print();
    
            //增加测试
            linear_list.addData(5, 1);
            linear_list.print();
    
    
             //查找元素下标
            int find_value = 15;
            int pos =linear_list.find(find_value);
            if (pos == -1) {
                System.out.println("您要找的 " + find_value + " 元素不在该线性表中");
            } else {
                System.out.println("您要找的 " + find_value + " 元素下标为:" + pos);
            }
    
        }
    }

    2、简单测试结果

    1 2 3 4 5 6 7 8 9 10 
    您要删除的 5 元素下标为:4
    1 2 3 4 6 7 8 9 10
    1 5 2 3 4 6 7 8 9 10
    您要找的 15 元素不在该线性表中
  • 相关阅读:
    纪伯伦:我曾七次鄙视我的灵魂
    字典和集合
    元组
    列表
    字符串
    数值类型
    内置函数了解一下
    了解Python
    centos7安装mysql数据库
    xenserver 上传centos6.8镜像
  • 原文地址:https://www.cnblogs.com/karrya/p/10884377.html
Copyright © 2020-2023  润新知