代做网站作业做百度手机网站关键词

当前位置: 首页 > news >正文

代做网站作业,做百度手机网站关键词,网站项目建设措施,找建设网站【关于java线性表#xff08;顺序表#xff09;的基本操作】 线性表是什么#xff1f;#x1f435;#x1f412;#x1f98d;顺序表的定义#x1f9a7;#x1f436;#x1f435;创建顺序表新增元素,默认在数组最后新增在 pos 位置新增元素判定是否包含某个元素查找某个… 【关于java线性表顺序表的基本操作】 线性表是什么顺序表的定义创建顺序表新增元素,默认在数组最后新增在 pos 位置新增元素判定是否包含某个元素查找某个元素对应的位置获取 pos 位置的元素给 pos 位置的元素设为 value 更新删除第一次出现的关键字key获取顺序表长度清空顺序表打印顺序表 本文主要讲解关于顺序表的基本操作希望大家能够自己动手敲一敲 线性表是什么 线性表是一种数据结构是由零个或多个数据元素的有限序列组成的。每个元素除了第一个元素外都有一个直接前驱元素除了最后一个元素外都有一个直接后继元素。线性表的数据集合为{a1,a2,…,an}每个元素的类型均为DataType。线性表是存储逻辑关系为一对一的数据的最简单一种存储结构。线性表的物理结构不一定是连续的。 顺序表的定义 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。在数组 上完成数据的增删查改。 顺序表可动态增长的数组要求数据是连续存储的动态顺序表就是使用动态开辟的数组存储我会通过代码来给大家讲解 以下顺序表中的方法是需要掌握的 public interface IList2 {//新增元素,默认在数组最后新增public void add(int data);// 在 pos 位置新增元素public void add(int pos, int data);// 判定是否包含某个元素public boolean contains(int toFind) ;// 查找某个元素对应的位置public int indexOf(int toFind);// 获取 pos 位置的元素public int get(int pos);// 给 pos 位置的元素设为 value 更新public void set(int pos, int value);//删除第一次出现的关键字keypublic void remove(int toRemove) ;// 获取顺序表长度public int size();// 清空顺序表public void clear() ;// 打印顺序表public void display();boolean isFull();//数组是否满了public boolean isEmpty();//数组是否为空 }创建顺序表 public class MyArrayList {public int[] elem;public int usedSize; public static final int DEFAULT_SIZE10;public MyArrayList(){this.elem new int[DEFAULT_SIZE]; }public MyArrayList(int capacity){this.elem new int[capacity]; }首先我们创建一个顺序表看做一个数组有两个属性第一个elem为数组第二个为usedSize表示有效数据的个数。数组的长度我们通过构造方法来初始化第一种是创建一个数组长度为10用常量DEFAULT_SIZE表示的数组,第二种是通过传参数来自定义数组的长度。 新增元素,默认在数组最后新增 在敲代码以前我们需要考虑一个情况如果数组满了怎么才能添加元素所以我们在添加元素之前检查一下数组是否满了如果满了我们将进行扩容再添加元素。而检查数组我们定义一个方法以后用到直接调用即可。我们需要用到两个方法一个为检查是否满了一个方法来扩容。 public void add(int data) {checkCapacity(); //检查容量this.elem[this.usedSize] data;this.usedSize;}private void checkCapacity(){ if(isFull()){//扩容elem Arrays.copyOf(elem,elem.length*2);//将elem数组的长度扩容为原来的两倍}}public boolean isFull() {return usedSizeelem.length; //数组长度是否等于有效数据的长度}在 pos 位置新增元素 我们首先需要思考pos位置是否合法pos如果为-1或者超多数组长度则不再新增那么我们使用自定义异常来处理如果pos合法在检查数组的容量最后在新增元素新增元素时我们将从最后一个有效元素向后移动依次向前直到ipospos位置为空将elem[pos] 位置插入数据 public void add(int pos, int data) {try {checkPosOnAdd(pos);}catch (PosILLegality e){e.getStackTrace();return;}checkCapacity();for(int i usedSize-1;ipos;i–){elem[i1]elem[i];}elem[pos] data;usedSize;}private void checkPosOnAdd(int pos)throws PosILLegality{if(pos0posusedSize){System.out.println(不符合法);throw new PosILLegality(插入元素下标异常pos);}}public class PosILLegality extends RuntimeException{public PosILLegality(String msg){super(msg);} }判定是否包含某个元素 首先需要考虑如果数组为空没有元素则不查找直接返回false,其次遍历数组查看是否存在 public boolean contains(int toFind) {if(isEmpty()){return false;}for(int i 0;iusedSize;i){if(elem[i]toFind){return true;}}return false;}public boolean isEmpty() {return false; }查找某个元素对应的位置 首先判断数组是否为空然后在进行查找找到返回下标 public int indexOf(int toFind) {if(isEmpty()){return -1;}for(int i 0;iusedSize;i){if(elem[i]toFind){return i;}}return -1;} 获取 pos 位置的元素 首先判断pos位置是否合法与新增元素不同新增元素可以在数组最后新增查找元素只能在有效数据中查找范围有差异如果pos不合法直接抛出自定义异常其次判断数组是否为空最后在返回pos位置的元素。 public int get(int pos) throws MyArrayListEmpty{checkPosOnGetAndSet(pos);if(isEmpty()){throw new MyArrayListEmpty(获取指定下标元素时顺序表位空);}return elem[pos];}private void checkPosOnGetAndSet(int pos) throws PosILLegality {if (pos 0 || pos usedSize) {System.out.println(不符合法);throw new PosILLegality(获取制定下标的元素异常 pos);}}public class PosILLegality extends RuntimeException{public PosILLegality(String msg){super(msg);} } public class MyArrayListEmpty extends RuntimeException{public MyArrayListEmpty(String msg){super(msg);} }给 pos 位置的元素设为 value 更新 首先判断pos位置是否合法与新增元素不同新增元素可以在数组最后新增查找元素只能在有效数据中查找范围有差异如果pos不合法直接抛出自定义异常如果合法在进行修改元素 public void set(int pos, int value) {checkPosOnGetAndSet(pos);elem[pos]value;} private void checkPosOnGetAndSet(int pos) throws PosILLegality {if (pos 0 || pos usedSize) {System.out.println(不符合法);throw new PosILLegality(获取制定下标的元素异常 pos);}}public class PosILLegality extends RuntimeException{public PosILLegality(String msg){super(msg);} }删除第一次出现的关键字key 首先用java自带函数找到关键字的下标如果存在那么如何删除呢我们通过要删除的元素的后一个往前盖元素i范围小于usedSize-1如果等于usedSize-1elem[i-1]将会越界 public void remove(int toRemove) {int index indexOf(toRemove);if(index-1){System.out.println(没有这个数字);return;}for(int i index;iusedSize-1;i){elem[i]elem[i1];}usedSize–;} 获取顺序表长度 public int size() {return this.usedSize;}清空顺序表 public void clear() {this.usedSize0;}打印顺序表 public void display() {for(int i 0;ithis.usedSize;i){System.out.println(this.elem[i] );}System.out.println();}