private int curLen; //线性表的当前长度
……
}
【核心算法提示】
⑴ 顺序表插入操作的基本步骤:要在当前的顺序表中的第 i(0≤i≤n, n 为线性表的
当前长度)个数据元素之前插入一个数据元素 x,首先要判断插入位置 i 是否合法, i 的合
法值范围:1≤i≤n+1,若是合法位置,就再判断顺序表是否满,如果不满,则将第 i 个数
据元素及其之后的所有数据元素都后移一个位置,此时第 i 个位置已经腾空,再将待插入的
数据元素 x 插入到该位置上,最后将线性表的当前长度值增加 1,否则抛出异常。
⑵ 顺序表删除操作的基本步骤:要删除当前顺序表中的第 i(0≤i≤n-1)个数据元素,
首先仍然要判断 i 的合法性,i 的合法范围是 0≤i≤n-1,若是合法位置,则将第i 个数据
元素之后的所有数据元素都前移一个位置,最后将线性表的当前长度减1,否则抛出异常。
⑶ 顺序表查找操作的基本步骤:要在当前顺序表中查找一个给定值的数据元素,则可
以采用顺序查找的方法,从顺序表中第 0 个数据元素开始依次将数据元素值与给定值进行比
较,若相等则返回该数据元素在顺序表中的位置,如果所有数据元素都与 x 比较但都不相等,
表明值为 x 的数据元素在顺序表中不存在,则返回-1 值。
【核心算法描述】
⑴ 在当前顺序表上的插入操作算法
void insert(int i, Object x) throws Exception {
if (curLen == listElem.length) // 判断顺序表是否已满
}
throw new Exception("顺序表已满"); // 抛出异常
throw new Exception("插入位置不合法");// 抛出异常
listElem[j] = listElem[j - 1];// 插入位置及其之后的所有数据元素后移一位
if (i < 0 || i > curLen) // i 不合法
for (int j = curLen; j > i; j--)
listElem[i] = x; // 插入 x
curLen++; // 表长加 1
⑵ 在当前顺序表上的删除操作算法
void remove(int i) throws Exception {
if (i < 0 || i > curLen - 1) // i 不合法
throw new Exception("删除位置不合法");// 抛出异常
for (int j = i; j < curLen - 1; j++)
listElem[j] = listElem[j + 1];// 被删除元素及其之后的数据元素左移一个存储位置
curLen--; // 表长减 1
}
⑶ 在当前顺序表是的查找操作算法
int indexOf(Object x) {
int j = 0; // j 指示顺序表中待比较的数据元素,其初始值指示顺序表中第 0 个数据元素
while (j < curLen && !listElem[j].equals(x)) //依次比较
j++;
5
评论0
最新资源