线性表增删查改java_java使用数组实现线性表功能(增、删、查、改)

package com.fcy.dataStruct;

import java.util.Arrays;

public class SequenceList{

private int DEFAULT_SIZE=16;

//保存数组的长度

private int capacity;

//定义一个数组用于保存顺序线性表的元素

private Object[] elementData;

//保存顺序线性表中元素的当前个数

private int size=0;

//以默认数组长度创建空顺序线性表

public SequenceList(){

capacity=DEFAULT_SIZE;

elementData=new Object[capacity];

}

//以一个初始化元素来创建顺序线性表

public SequenceList(T element){

this();

elementData[0]=element;

size++;

}

public SequenceList(T element,int initSize){

capacity=1;

//把capacity设为大于initSize的最小的2的n次方

while(capacitysize-1){

throw new IndexOutOfBoundsException("线性表索引越界");

}

return (T)elementData[i];

}

//查找顺序线性表中指定元素的索引

public int locate(T element){

for(int i=0;isize){

throw new IndexOutOfBoundsException("线性表索引越界!");

}

ensureCapacity(size+1);

//将index处以后的所有元素向后移动一格

System.arraycopy(elementData,index,elementData,index+1,size-index);

elementData[index]=element;

size++;

}

//在线性顺序表开始添加一个元素

public void add(T element){

insert(element,size);

}

//扩充底层数组长度

private void ensureCapacity(int minCapacity){

//如果数组的原有长度小于目前所需长度

if(minCapacity>capacity){

//不断地将capacity*2,直到capacity大于minCapacity为止

while(capacitysize-1){

throw new IndexOutOfBoundsException("线性表索引越界!");

}

T oldValue =(T)elementData[index];

int numMoved=size-index-1;

if(numMoved>0){System.arraycopy(elementData,index+1,elementData,index,numMoved);

}

//清空最后一个元素

elementData[--size]=null;

return oldValue;

}

//删除顺序线性表中最后一个元素

public T remove(){

return delete(size-1);

}

//判断顺序线性表是否为空表

public boolean empty(){

return size==0;

}

//清空线性表

public void clear(){

//将底层数组的所有元素赋为null

Arrays.fill(elementData, null);

size=0;

}

public String toString(){

if(size==0){

return "[]";

}else{

StringBuilder sb=new StringBuilder("[");

for(int i=0;i

写一个小测试类:

package com.fcy.dataStruct;

public class SequenceListTest {

public static void main(String[] args) {

SequenceListlist=new SequenceList();

list.add("aaaa");

list.add("bbbb");

list.add("cccc");

list.insert("dddd",1);

System.out.println(list);

list.delete(2);

System.out.println(list);

System.out.println("cccc在顺序表中的位置:"+list.locate("cccc"));

}

}

运行结果:

f295b9cf3f7e61be934f12cf30183169.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值