线性表基本操作实现

写在前面数据结构与算法篇开始,分享技术,共同进步,有不足请见谅,相关意见可评论告知 ~

一个犹豫不决的灵魂,
奋起抗击无穷的忧患,
而内心却又矛盾重重,
真实生活便就是如此。
.
算法设计编程的重心,
数据结构程序的灵魂!


基于《数据结构》(c 语言版) 严蔚敏 描述,主要使用Java实现

常用基本操作

参考课本 p19

DestoryList

package DataStructures.BaseDo;

public class DestoryList {

    // 主函数测试
    public static void main(String[] args) {
        int [] arr ={2,4,7,6} ;
       int [] result= delete(arr) ;
        System.out.println(result);    // 数组的地址
        for (int i = 0; i <result.length ; i++) {
            System.out.println(result[i]);
        }

    }

    public static  int[]  delete(int [] arr){
        for (int i = 0; i <arr.length ; i++) {
            arr[i] = 0 ;
        }
        return arr ;
    }
}

解释:销毁线性表,使其内元素为0
在这里插入图片描述

ListEmpty

package DataStructures.BaseDo;

public class ListEmpty {
    public static void main(String[] args) {
        int [] a = {0,0} ;
        int [] b ={3,5,7} ;
        int [] c ={} ;    // 判断数组为空的方法  长度为空

        System.out.println(fun(a));
        System.out.println(fun(b));
//        System.out.println(c.length);
        System.out.println(fun(c));
    }

    // 判断是否为空表函数
    public static Boolean fun(int [] arr){
        boolean flag = false ;
        for (int i = 0; i <arr.length ; i++) {


            if(arr[i] == 0){
                flag = true;
            }

        }
        if(arr.length == 0){
            flag = true;
        }
      return flag ;
    }
}

解释 : 判断线性表是否为空,根据情况返回true/false
在这里插入图片描述

GetElem

package DataStructures.BaseDo;

public class GetElem {
    public static void main(String[] args) {
        int [] a= {1,3,4,6,8,9} ;
        // 主函数测试·
        System.out.println(Elem(a,3));
    }
    public static int Elem(int [] arr,int n){

        return  arr[n] ;
    }
}

解释: 返回线性表第i个值
在这里插入图片描述

ListInsert

package DataStructures.BaseDo;

// 实现在表中插入数据
public class ListInsert {
    // 插入函数
    public static long[] insert(long[] arr, int i, long l) {
        //新建数组,对原数组扩容
        long[] arr1 = new long[arr.length + 1];
        //将原数组数据赋值给新数组
        for (int j = 0; j < arr.length; j++) {
            arr1[j] = arr[j];
        }
        //将大于i的数据向后移动一位   j 为原数组中最后一个
        for (int j = arr1.length - 2; j > i; j--) {
            arr1[j + 1] = arr1[j];
        }

        //赋值到i位置
        arr1[i + 1] = l;
        return arr1;
    }

    //测试
    public static void main(String[] args) {
        long[] arr = {12, 25, 11, 36, 14};
        long[] arr1 = insert(arr, 3, 100);
        for (long l : arr1) {
            System.out.print(l + " ");
        }
    }
}

解释: 在线性表第i位置插入元素
在这里插入图片描述

ListDelete

package DataStructures.BaseDo;

public class ListDelete {
    public  static long[] delete (long[] arr, int i){
        long [] arr1 = new long[arr.length-1] ;


        for (int j = 0; j <arr1.length ; j++) {
            // 判断数组是否越界
            if(i<0 || i>arr1.length){
                throw  new RuntimeException("数组越界......") ;
            }
            if(j<i){
                arr1[j] = arr[j] ;
            }else {
                arr1[j]=arr[j+1] ;
            }
        }
        System.out.println("已删除"+arr[i]);
        return  arr1 ;
    }
    public static void main(String[] args) {
        long[] arr = {12, 25, 11, 36, 14};
        long[] arr1 = delete(arr, 0);
        for (long l : arr1) {
            System.out.print(l + " ");
        }
    }
}

解释: 删除线性表第i位置的元素
在这里插入图片描述

原文地址:https://www.cnblogs.com/lzhCreate/p/13831641.html