线性表基本操作实现

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

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


基于《数据结构》(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个值
在这里插入图片描述

LocateElem

package DataStructures.BaseDo;

public class LocateElem {
    public static void main(String[] args) {
        int [] a = {2,3,4,5}   ;
        System.out.println( compare(a,5) );
    }

   public static int compare(int [] a, int i){
       for (int j = 0; j <a.length ; j++) {
           if(a[j]==i){
               return  j ;
           }
       }
         return  0 ;
   }
}

解释: 返回线性表第一个与输入值相等的位序
在这里插入图片描述

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位置的元素
在这里插入图片描述

附加

课本之外

Replace

package DataStructures.BaseDo;


// 取代数组中元素算法
public class Replace {
    public static void main(String[] args) {
        int [] a = {1,2,3,4} ;
        int [] b= fun(a,2,0) ;
        for (int i : b) {
            System.out.print(i+ " ");
        }

        }
    public static int[] fun(int[] arr,int i,int num){      // 分函数写在主函数外
        int [] arr1 = new int[arr.length] ;
        for (int j = 0; j <arr.length ; j++) {
            arr1[j] = arr[j] ;
            arr1[i] = num ;
        }
        return arr1;

    }

    }


解释: 取代数组元素第i位置的元素
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值