最新【一起学数据结构与算法】顺序表的实现(1),2024年最新大数据开发系统工程师面试题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}


![在这里插入图片描述](https://img-blog.csdnimg.cn/21be47382a004c8a815975f18f87b3d8.png)


### 2.2 打印顺序表



//打印顺序表
public void display(){
for (int i = 0; i < this.usedSize; i++) {
System.out.print(this.elem[i] + " ");
}
System.out.println();
}


### 2.3 获取顺序表长度



//获取顺序表长度
public int size(){
return this.usedSize;
}


### 2.4 在 pos 位置新增元素


在顺序表里面插入元素的时候所插入的位置的前面一定是存放了元素的  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5e781bcf3b4d4442be95734c4a31cea4.png)



//在 pos 位置新填元素
public void add(int pos,int data){
if(pos < 0 || pos >usedSize){
System.out.println(“pos 位置不合法!”);
return;
}
if(isfull()) {
Arrays.copyOf(this.elem,2*this.elem.length);
}
for (int i = this.usedSize - 1; i >= pos; i–) {
this.elem[i + 1] = this.elem[i];
}
this.elem[pos] = data;
this.usedSize++;
}
//判断是否满
public boolean isfull(){
return this.usedSize == this.elem.length;
}


### 2.5 判定是否包含某个元素



//判断是否包含某个元素
public boolean contains(int toFind){
for (int i = 0; i < this.usedSize; i++) {
if(this.elem[i] == toFind){
return true;
}
}
return false;
}


### 2.6 查找某个元素对应的位置



//查找某个元素的对应位置,找不到返回-1
public int search(int toFind){
for (int i = 0; i < this.usedSize; i++) {
if(this.elem[i] == toFind){
return i;
}
}
return -1;
}


### 2.7 获取 pos 位置的元素



//获取pos位置的值
public int getPos(int pos){
if(pos < 0 || pos >= this.usedSize){
System.out.println(“pos 位置不合法”);
return -1;//这里说明一下,业务上的处理,不考虑
}
if(isEmpty()){
System.out.println(“顺序表为空!”);
return -1;
}
return this.elem[pos];
}
public boolean isEmpty(){
return this.usedSize == 0;
}


### 2.8 给 pos 位置的元素设为 value



//给pos位置元素更新value
public void setPos(int pos,int value){
if (pos < 0 || pos >= this.usedSize){
System.out.println(“pos 位置不合法”);
return;
}
if(isEmpty()){
System.out.println(“顺序表为空!”);
return;
}
this.elem[pos] = value;
}


### 2.9 删除你想要删除的元素



//删除第一次出现的关键字key
public void remove(int toRmove){
if (isEmpty()){
System.out.println(“顺序表为空!”);
return;
}
int index = search(toRmove);
if(index == -1){
System.out.println(“没有你要删除的数字!”);
return;
}
for (int i = index; i < this.usedSize - 1; i++) {
this.elem[i] = this.elem[i+1];
}
this.usedSize–;
//this.elem[useSize] = null;如果数组当中是引用数据类型
}


### 2.10 清空顺序表



//清空顺序表
public void clear(){
this.usedSize = 0;
}


## 三、MyArrayList.java



import java.util.Arrays;

public class MyArrayList {

public int[] elem;
public int usedSize;

public MyArrayList(){
    this.elem = new int[10];
}
//打印顺序表
public void display(){
    for (int i = 0; i < this.usedSize; i++) {
        System.out.print(this.elem[i] + " ");
    }
    System.out.println();
}
//获取顺序表长度
public int size(){
    return this.usedSize;
}
//在 pos 位置新填元素
public void add(int pos,int data){
    if(pos < 0 || pos >usedSize){
        System.out.println("pos 位置不合法!");
        return;
    }
    if(isfull()) {
        Arrays.copyOf(this.elem,2\*this.elem.length);
    }
    for (int i = this.usedSize - 1; i >= pos; i--) {
        this.elem[i + 1] = this.elem[i];
    }
    this.elem[pos] = data;
    this.usedSize++;
}
//判断是否满
public boolean isfull(){
    return this.usedSize == this.elem.length;
}

//判断是否包含某个元素
public boolean contains(int toFind){
    for (int i = 0; i < this.usedSize; i++) {
        if(this.elem[i] == toFind){
            return true;
        }
    }
    return false;
}
//查找某个元素的对应位置,找不到返回-1
public int search(int toFind){
    for (int i = 0; i < this.usedSize; i++) {
        if(this.elem[i] == toFind){
            return i;
        }
    }
    return -1;
}

//获取pos位置的值
public int getPos(int pos){
    if(pos < 0 || pos >= this.usedSize){
        System.out.println("pos 位置不合法");
        return -1;//这里说明一下,业务上的处理,不考虑
    }
    if(isEmpty()){
        System.out.println("顺序表为空!");
        return -1;
    }
    return this.elem[pos];
}
public boolean isEmpty(){

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

链图片转存中…(img-QLaoNAgS-1715815667266)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值