线性表
程序员文章站
2022-09-29 07:57:22
import java.util.Arrays;public class MyArraylist { int[] element;//数组 int size;//线性表实际大小 public MyArraylist() { this.size=0; this.element=new int[4]; } public MyArraylist(int capacity) { this.size=0; thi...
import java.util.Arrays;
public class MyArraylist {
int[] element;//数组
int size;//线性表实际大小
public MyArraylist() {
this.size=0;
this.element=new int[4];
}
public MyArraylist(int capacity) {
this.size=0;
this.element=new int[capacity];
}
// 打印顺序表
public void display() {
for (int i=0;i<this.size;i++){
System.out.print(this.element[i]+" ");
}
System.out.println();
}
//线性表是否满
public boolean isFull() {
if (this.size==this.element.length){
return true;
}
return false;
}
//扩容
public void resize( ) {
this.element= Arrays.copyOf(this.element,2*this.element.length);
}
//在 pos 位置新增元素
public void addPos(int pos, int data) {
if (pos<0||pos>this.element.length-1){
System.out.println("插入位置不合法");
return;
}
if (isFull()){
//System.out.println("线性表已满");
resize();
}
//pos位置后面的所有元素后移
for (int i=this.size-1;i>=pos;i--){
this.element[i+1]=this.element[i];
}
//插入元素
this.element[pos]=data;
this.size++;
}
//默认插入到数组的最后
public void addTail(int data) {
if (isFull()){
resize();
}
this.element[this.size]=data;
this.size++;
}
// 判定是否包含某个元素
public boolean contains(int toFind) {
for (int i=0;i<this.size;i++){
if (this.element[i]==toFind){
return true;
}
}
return false;
}
// 查找某个元素对应的位置
public int search(int toFind) {
for (int i=0;i<this.size;i++) {
if (this.element[i] == toFind) {
return i;
}
}
return -1;
}
// 获取顺序表长度
public int size() {
return this.size;
}
// 获取 pos 位置的元素
public int getPos(int pos) {
if (pos<0||pos>this.size-1){
System.out.println("查找位置不合法");
}
return this.element[pos];
}
// 给 pos 位置的元素修改为 value
public void setPos(int pos, int value) {
if (pos<0||pos>this.size-1){
System.out.println("修改位置不合法");
}
this.element[pos]=value;
}
//删除第一次出现的关键字key
public void remove(int key) {
int index=search(key);
for (int i=index;i<this.size;i++){
this.element[i]=this.element[i+1];
}
this.size--;
}
// 清空顺序表
public void clear() {
this.size=0;
}
public static void main(String[] args) {
MyArraylist myArraylist=new MyArraylist(4);
//指定位置插入元素
myArraylist.addPos(0,10);
myArraylist.addPos(1,20);
myArraylist.addPos(2,30);
//打印
myArraylist.display();
//尾插法
myArraylist.addTail(40);
myArraylist.display();
myArraylist.addTail(50);
myArraylist.display();
myArraylist.addPos(2,60);
myArraylist.display();
//查找元素
int index=myArraylist.search(60);
System.out.println("查找元素的位置:"+index);
//元素是否存在
boolean bool=myArraylist.contains(60);
System.out.println("查找元素是否存在:"+bool);
//获取指定位置元素
int val=myArraylist.getPos(2);
System.out.println("获取指定位置元素:"+val);
//修改指定位置元素
myArraylist.setPos(2,70);
myArraylist.display();
//线性表大小
int size=myArraylist.size();
System.out.println("线性表的大小:"+size);
//删除元素
myArraylist.remove(70);
myArraylist.display();
//清空线性表
myArraylist.clear();
size=myArraylist.size();
System.out.println("清空线性表后的大小:"+size);
myArraylist.display();
}
}
- 测试用例
本文地址:https://blog.csdn.net/qq_45630711/article/details/111877556