Java 精炼解读数据结构的顺序表如何操作

网友投稿 237 2022-08-20


Java 精炼解读数据结构的顺序表如何操作

目录前言一、什么是顺序表顺序表的概念及结构创建顺序表打印顺序表获取顺序表长度在pos位置新增元素判定是否包含某个元素查找某个元素对应的位置获取pos位置的元素给pos位置的元素设为value删除你想要删除的元素总结:

前言

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见 的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储 时,通常以数组和链式结构的形式存储。

一、什么是顺序表

顺序表的概念及结构

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改

其实就是一个数组。那为什么还要写一个顺序表,直接用数组不就好了?不一样的,写到类里面就可以面向对象。

创建顺序表

public class MyArrayList {

public int[] elem;//数组

public int usedSize;//数据的有效个数

public MyArrayList(){

this.elem = new int[10];

}

}

打印顺序表

打印结果:

因为display是根据usedsize打印的, usedsize没赋值所以什么也不打印。

获取顺序表长度

在pos位置新增元素

在顺序表里面插入元素的时候所插入的位置的前面一定是存放了元素的,

画图分析:

代码如下:

// 在 pos 位置新增元素

public void add(int pos, int data) {

if(pos < 0 || pos > usedSize){

System.out.println("pos位置不合法");

return;

}

if(isFull()){

this.elem = Arrays.copyOf(this.elem,this.elem.length*2);

}

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;

}

打印结果:

查找某个元素对应的位置

// 查找某个元素对应的位置

public int search(int toFind) {

for (int i = 0; i

if(this.elem[i] == toFind){

return i;

}

}

return -1;

}

打印结果:

获取 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;

}

打印结果:

给 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;

}

public boolean isEmpty() {//判断为不为空的情况下

return this.usedSize == 0;

}

打印结果:

删除你想要删除的元素

//删除第一次出现的关键字key

public void remove(int toRemove) {

if(isEmpty()){

System.out.println("顺序表为空");

return;

}

int index = search(toRemove);//查找要删除元素对应的位置

if(index == -1){

System.out.println("没有你要找到数字");

return;

}

for (int i = index; i

this.elem[i] = this.elem[i+1];

}

this.usedSize--;

}

打印结果:

总结:

本文简单介绍了数据结构的顺序表,如何创建顺序表,顺序表上如何操作数据。通过简单例题的方式加深对顺序表的理解。上述就是今天的内容,有任何疑问的话可以随时私信我,文章哪里出现了问题我都会积极改正,也希望大家能更快的掌握自己想要的知识,让我们一起加油!!!!!

if(this.elem[i] == toFind){

return i;

}

}

return -1;

}

打印结果:

获取 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;

}

打印结果:

给 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;

}

public boolean isEmpty() {//判断为不为空的情况下

return this.usedSize == 0;

}

打印结果:

删除你想要删除的元素

//删除第一次出现的关键字key

public void remove(int toRemove) {

if(isEmpty()){

System.out.println("顺序表为空");

return;

}

int index = search(toRemove);//查找要删除元素对应的位置

if(index == -1){

System.out.println("没有你要找到数字");

return;

}

for (int i = index; i

this.elem[i] = this.elem[i+1];

}

this.usedSize--;

}

打印结果:

总结:

本文简单介绍了数据结构的顺序表,如何创建顺序表,顺序表上如何操作数据。通过简单例题的方式加深对顺序表的理解。上述就是今天的内容,有任何疑问的话可以随时私信我,文章哪里出现了问题我都会积极改正,也希望大家能更快的掌握自己想要的知识,让我们一起加油!!!!!

this.elem[i] = this.elem[i+1];

}

this.usedSize--;

}

打印结果:

总结:

本文简单介绍了数据结构的顺序表,如何创建顺序表,顺序表上如何操作数据。通过简单例题的方式加深对顺序表的理解。上述就是今天的内容,有任何疑问的话可以随时私信我,文章哪里出现了问题我都会积极改正,也希望大家能更快的掌握自己想要的知识,让我们一起加油!!!!!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一起来了解Java的内部类
下一篇:一起来了解Java的Lambda表达式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~