
什么是顺序表?它是一种什么结构?
顺序表是用一段物理地址连续的存储单元依次存储的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
(学习视频分享:java视频教程)
顺序表分为:
静态顺序表:使用定长数组存储
动态顺序表:使用动态开辟的数组存储
静态顺序表适用于确定知道需要存多少数据的场景。
静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。
顺序表实现
首先得给定一个顺序表的长度,假如你要给列表插入元素,我们得先给0号位置插第一个数,如果0号位置没有数,我们不能直接插在1号位置或是更后边。如果0,1,2号位置都有数据,我们要往0号或1号位置插的话,这个时候得倒着遍历顺序表,让前边的数据往后挪一步。

增:
public class SepList {
public int[] val;//定义数据
public int size;//存放一个数据则让size++;
//构造方法 顺序表大小
public SepList(){
this.val = new int[5];
}
//也可以往进传大小
public SepList(int ret){
this.val = new int[ret];
}
//增加数据 得传要插入的位置与对应位置的数据 就比如0号位置插10
public void addVal(int pos,int val){
//首先判断顺序表是否满
if(this.val.length == this.size) return;
//其次得看看给的位置是否合法 pos不能小于0 也不能比如0号位置有数据 1号位置没有数据 然后插在2号或者更后边的位置
if(pos this.size) return;
//如果0 1 2 3位置都有数据,要往1号位置插,得让后边的位置往后移一步
for(int i = this.size; i >= pos; i--){
this.val[i + 1] = this.val[i];
}
//此时在给定位置插数据
this.val[pos] = val;
this.size++;
}
//打印链表
public void disPlay(){
for(int i = 0; i <p>如果要插入多个数据则调用方法即可<br>比如:</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill11083" title="Java调试"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20dbae7c507.jpg" alt="Java调试" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill11083" title="Java调试" class="overflowclass">Java调试</a>
<p class="overflowclass">通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。
术语注解
JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议)
remote JVM:远程 Java 虚拟机
step through code:代码单步调试(步入 / 步过 / 步出调试)
inspect variables:变量查看 / 变量检视
stac</p>
</div>
<a rel="nofollow" href="/xiazai/skill11083" title="Java调试" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><pre class="brush:php;toolbar:false"> myList.addVal(0,10);//第一次插入
myList.addVal(1,20);
myList.addVal(2,30);
myList.addVal(3,40);
myList.addVal(4,50);
myList.disPlay();//打印
//执行结果
10 20 30 40 50
此时顺序表已满 如果再往进插入呢
myList.addVal(0,10);//第一次插入 myList.addVal(1,20); myList.addVal(2,30); myList.addVal(3,40); myList.addVal(4,50); myList.addVal(5,60); myList.addVal(6,70); myList.disPlay();//打印 //执行结果 10 20 30 40 50
为啥还是原来的,也没有报错。是因为进入add函数在判断顺序表为满时,如果满了,直接跳出到打印函数。并不会报错。此时增函数就写好了。
查

//判定链表是否包含某个元素
public boolean contains(int toFind){
for(int i = 0; i this.size) return -1;
for(int i = 0; i <p>改</p><p>直接找到pos位置对应的数据,将新数据赋给它就好了</p><p><img src="https://img.php.cn/upload/image/127/855/384/1610329222367239.png?x-oss-process=image/resize,p_40" title="1610329222367239.png" alt="dfe34b8af6a91932a4ae0258ed9aa01.png"></p><pre class="brush:php;toolbar:false"> //修改pos位置的值
public void remove(int pos,int val){
if(pos this.size){
return;
} else {
this.val[pos] = val;
}
}
myList.remove(2,3);//2号位置改为3
myList.remove(3,4);//3号位置改为4
myList.disPlay();//打印
//执行结果
10 20 3 4 50
删
删除指定的数据后,后边的数据往前覆盖就可以了

//删除元素
public void delVal(int key){
int i,j = 0;
//找到该位置
for(i = 0; i <p>相关推荐:<a href="https://www.php.cn/java/guide/" target="_blank">java入门教程</a><br></p>
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










