日升时奋斗,日落时自省
目录
1. 我们首先写的是一个打印方法,这里打印(display)
一、顺序表
顺序表示数据结构的一种,在java中有专属自己的库函数来写顺序表了,但是我们应该做到能够知道顺序表是什么样子,库函数中的顺序表很多,可以自己去看一下,简单了解
常了解到的就是增、删、查、改,那我们就来写一下
普通情况下数组是不能随便加减的,或更改位置
这里我们就需要实现一个类,来填写方法,实现数组的改动
创建一个类,先定义一个数组,构造方法接收我们需要传进来的数组数组在这里开几个都可以,之后在增、改的时候会进行扩容处理
接下来我就需要写顺序表需要调用的方法了,满足当下我们的需求,需求无非就是增删改除已经其扩展,以下就是当前需要的模板
public void display() {
}
// 新增元素,默认在数组最后新增
public void add(int data) {
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
}
// 判定是否包含某个元素
public boolean contains(int toFind) {
return true;
}
// 查找某个元素对应的位置
public int indexOf(int toFind) {
return -1;
}
// 获取 pos 位置的元素
public int get(int pos) {
return -1;
}
// 给 pos 位置的元素设为 value
public void set(int pos, int value) {
}
//删除第一次出现的关键字key
public void remove(int toRemove) {
}
// 获取顺序表长度
public int size() {
return 0;
}
// 清空顺序表
public void clear() {
}
1. 我们首先写的是一个打印方法,这里打印(display)
思路:for循环遍历每一个数组值,最后在进行换行,保持美观
2.计算数组中有效数值的个数(size)
简单提一下:(计算很简单)
这步出来的时候,我们能将打印函数的数组长度那一项换下来
3.添加方法,直接添加最后一位(add)
(1)首先当前数组是否满了
(2)如果满了进行扩容
(3)再添加数值
4. 在任意位置增一个元素(add)
限制条件:
(1)数组不能是满的
(2)传进来的数字不能小于0吧,下标最小也就是0了,-1可以吗,当然不可以
(3)还有呢,也就是不容易想到的,数字是不能跳着加的(意思就是一共只有3个数字,但是我就是想加到第5个数字的位置上,中间空出一个4位置是不行的)图解
异常可以简单写:
有一个可以传值接收就好
5.包含某个元素(contain)
思路:遍历数组找有没有相等的
6.寻找某一元素的下标
与5相同
返回值变成下标位置就可以了
7.获取pos当前位置元素(get)
(1)首先注意该数组是否就是空的
(2)该数组当前pos是否越界了
(3)查找当前pos的位置
8.改变pos位置的元素
(1)首先注意该数组是否就是空的
(2)该数组当前pos是否越界了(是在有效数字范围内)
(3)查找当前pos的位置,改变元素
9.删除第一次出现的数值toRemove
(1)判断是否为空
(2)可以放入查找方法中直接找,if判断是否可以往下进行
(3)最后在进行压缩数组,从当前位置的数组向前覆盖就可以了
10.最后也就是如何清空当前顺序表
为什么这样清楚呢,虽然里面的数组值还在,但是我们值根据当前有效值进行变化,这里只要将有效值清为0就可以了
如果是引用类型的呢,引用类型最后清楚所有是要置空的:
当前我是引用类型清空时的操作