JAVA中修改顺序表中的元素_Java实现顺序表的增删改查

public class MyArrayList {

private int[] array;   //代表的是存在数据的数组

//array.length代表的是数组的容量

private int size;        //记录顺序表的已有数据个数

//构造方法

public MyArrayList() {

//1.申请空间

array = new int[2];

//2.初始化数据个数

size = 0;

}

//增(重点)

//尾插  平均O(1)

public void pushBack(int element) {

ensureCapacity();//扩容

array[size++] = element;

}

//头插

public void pushFront(int element) {

ensureCapacity();//扩容

for(int i = size;i>=1;i--)

{

array[i]=array[i-1];

}

array[0]=element;

size++;

}

//中间任一节点插入

public void insert(int index, int element){

if(index<0 || index>size)

{

System.err.println("插入失败");

return;

}

ensureCapacity();//扩容

for(int i = size - 1;i>=index;i--)

{

array[i+1]=array[i];

}

array[index]=element;

size++;

}

//删(重点)

//尾删

public void popBack() {

if(size<=0)

{

System.err.println("顺序表为空,无法删除");

return;

}

array[--size]=0;

}

//头删

public void popFront() {

if(size<=0)

{

System.err.println("顺序表为空,无法删除");

return;

}

for(int i=0;i<=size-2;i++)

{

array[i]=array[i+1];

}

array[--size]=0;

}

//中间删

public void earse(int index) {

if(size<=0)

{

System.err.println("顺序表为空,无法删除");

return;

}

if(index<0 || index>=size)

{

System.err.println("删除失败");

return;

}

for(int i=index+1;i<=size-1;i++)

{

array[i-1]=array[i];

}

array[--size]=0;

}

//返回·element在顺序表中的下标,如果出现多次,返回第一个下标

public  int indexOf(int element) {

for(int i = 0 ; i

{

if(array[i]==element)

{

return i;

}

}

return -1;

}

//拿到下标,返回值

public int get(int index) {

if(index<0||index>=size)

{

System.out.println("无法找到下标");

return -1;

}

return array[index];

}

//修改数值

public void set(int index,int element) {

if(index<0||index>=size)

{

System.out.println("无法找到下标");

return ;

}

array[index]=element;

}

//删除掉某一个元素,如果出现多次,删除第一个出现的

public void remove(int element) {

int index = indexOf(element);

if(index != -1)

{

earse(index);

}

}

public int size() {

return size;

}

public boolean isEmpty() {

return size == 0;

}

//删除所有相同的元素

public void removeAll(int element) {

/*

时间:O(n^2)     空间:O(1)

int index;

while((index=indexOf(element))!=-1)

{

earse(index);

}

时间:O(n)      空间:O(n)

int[] newArray = new int[array.length];

int j = 0;

for(int i = 0;i

{

if(array[i]!=element)

{

newArray[j++]=array[i];

}

}

array = newArray;

size = j;

*/

//时间:O(n)          空间:O(1)

int j = 0;

for(int i = 0;i

{

if(array[i]!=element)

{

array[j++]=array[i];

}

}

size = j;

}

//打印

public void print() {

System.out.println("打印顺序表:当前容量为:"+array.length);

for(int i = 0;i

{

System.out.println(array[i]+" ");

}

System.out.println();

}

//扩容

public void ensureCapacity() {

if(size

{

return;

}

int newCapacity = array.length*2;

int[] newArray = new int[newCapacity];

for(int i = 0;i

{

newArray[i] = array[i];

}

array = newArray;

}

public static void main(String[] args){

MyArrayList list = new MyArrayList();

list.print();

list.pushBack(1);

list.pushBack(2);

list.pushBack(3);

list.print();//1,2,3

list.pushFront(10);

list.pushFront(20);

list.pushFront(30);

list.print();//30,20,10,1,2,3

list.insert(3,100);

list.print();//30,20,10,100,1,2,3

list.insert(20,200);//报错

list.earse(2);

list.earse(2);

list.print();//30,20,1,2,3

list.popFront();

list.popFront();

list.popFront();

list.print();//2,3

list.popBack();

list.popBack();

list.print();//空

list.popBack();//报错

list.pushBack(1);

list.pushBack(2);

list.pushBack(1);

list.print();//1  2  1

System.out.println(list.indexOf(1));

list.set(1,1);

list.print();// 1 1 1

list.remove(1);

list.print();// 1 1

list.pushBack(1);

list.print();// 1 1 1

list.removeAll(1);

list.print();// 空

}

}

标签:index,Java,int,改查,list,增删,array,public,size

来源: https://blog.csdn.net/weixin_44770633/article/details/97283138

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值