赞
踩
顺序表实际上就是一个数组,但是我们将这个数组的属性和使用方法都放在一个类里面,在我们需要使用时,只需要new一个对象来使用这个类就可以。
判断插入位置是否合法
判断顺序表是否满
插入数据(在插入数据时,需要将插入位置后面的数据向后移动一位)
- public class MyArrayList {
- int[] array;//顺序表的内容存储在一个数组中
- int useSize;//有效数据个数
- public MyArrayList(){
- this.array=new int[10];//在创建一个对象时,创建一个大小为10的数组
- }
- public void display(){//显示当前顺序表的内容
- for (int i = 0; i < this.useSize; i++) {
- System.out.print(this.array[i]+" ");
- }
- System.out.println();
- }
- public void add(int pos,int data){//插入一个数据
- if(pos <0||pos>this.useSize){//判断插入位置是否合法
- System.out.println("插入位置非法");
- return;
- }
- if(useSize==this.array.length){//判断顺序表是否满
- this.array=Arrays.copyOf(this.array,this.array.length*2);
- }
- for (int i = useSize-1; i >= pos; i--) {//插入数据
- this.array[i+1]=this.array[i];
- }
- this.array[pos]=data;
- this.useSize++;
- }
- }
- public void del(int pos){//删除某个位置的数据
- if (pos<0||pos>this.useSize-1){//判断插入位置是否合法
- System.out.println("位置不合法");
- return;
- }
- if (this.useSize==0){
- System.out.println("顺序表为空");
- return;
- }
-
- for (int i = pos; i <useSize ; i++) {//删除数据
- this.array[i]=this.array[i+1];
- }
- useSize--;
- }
- public void change(int pos,int value){
- if (pos<0||pos>this.useSize-1){//判断位置是否合法
- System.out.println("位置不合法");
- return;
- }
- if (this.useSize==0) { //判断是否为空表
- System.out.println("顺序表为空");
- return;
- }
- this.array[pos]=value;
- }
- }
- public void find(int value){
- if (this.useSize==0) { //判断是否为空表
- System.out.println("顺序表为空");
- return;
- }
- for (int i = 0; i < useSize; i++) {
- if(this.array[i]==value){
- System.out.println(i);
- return;
- }
- }
- System.out.println("没有这个数据");
- }
只需要使useSize等于0即可
- public void clear(){
- useSize=0;
- }
- }
当然也有特殊情况,当顺序表中存储的是引用类型时,只是单一的将useSize改为0无法清空顺序表,因为每一个引用都会指向一个对象,引用不删除,会一直占用空间
- public void clear(){
- useSize=0;
- /* for (int i = 0; i < this.useSize; i++) {
- this.array[i]=null;
- }*/
- }
被注释掉的内容就是引用类型的清空顺序表
//还在学习中,有任何错误,望指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。