顺序表的插入和删除

public class Test23{
 public static void main(String[] agrs){
  MyArrayList list=new MyArrayList();
  list.pushBack(1);
  list.pushBack(2);
  list.pushBack(3);
  list.print();
  list.pushFront(10);
  list.pushFront(20);
  list.pushFront(30);
  list.print();
  list.insert(3,0);
  list.print();
  list.earse(3);
  list.print();
 }
}
//顺序表的元素类型是int
class MyArrayList{
 //属性是什么
 private int[] array;//代表存储数据的数组
 private int size;//记录顺序表已有数据个数
 public MyArrayList(){
  //申请空间
  array=new int[4];
  //初始化数据个数
  size=0;
 }
 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){//指定下标插入指定元素
     ensureCapacity();
  if(index<0||index>size)
  {
   System.err.println("下标错误");
   return;
  }
  for(int i=size-1;i>=index;i--)
  {
   array[i+1]=array[i];
  }
  array[index]=element;
  size++;
    }
 public void popBack(int element){//尾删法
     if(size<=0)
  {
   System.err.println("顺序表为空");
   return;
  }
  array[size-1]=0;
  size--;
 }
 
 public void popFront(){//头删法
     if(size<=0)
  {
   System.err.println("顺序表为空");
   return;
  }
  for(int i=0;i<size-1;i++)
  {
   array[i]=array[i+1];
  }
  array[size-1]=0;
  size--;
 }
 public void earse(int index){//删除指定下标的元素
  if(size<=0)
  {
   System.err.println("顺序表为空");
  }
  if(index<0||index>size-1)
  {
   System.err.println("下标错误");
  }
  for(int i=index;i<=size-1;i++)
  {
   array[i]=array[i+1];
  }
  array[size-1]=0;
  size--;
 }
 public void print(){//打印
  for(int i=0;i<size;i++)
  {
   System.out.print(array[i]+"  ");
  }
  System.out.println();
 }
 private void ensureCapacity(){//扩容
  if(size<array.length)
  {
   return;
  }
  int newCapacity=array.length*2;
  int[] newArray=new int[newCapacity];
  for(int i=0;i<size;i++)
  {
   newArray[i]=array[i];
  }
  array=newArray;
 }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值