定义:
- 用一组地址连续的存储单元依次存储线性表中每个数据元素,这种存储结构称为线性表的顺序存储结构,用这种结构表示的线性表称为顺序表。
特点:
- 用数据元素在计算机内物理位置相邻来表示线性表中数据元素之间的逻辑关系。
存储位置:
-
线性表中第i个数据元素ai的存储位置
-
线性表的顺序存储结构为随机存储结构
-
存储结构内存视图
代码表示:
- 顺序表的插入
/**
* 顺序表的插入
*
* @param arr 数组
* @param pos 插入的位置
* @param value 插入的值
* @return
*/
public static boolean listInsert(int[] arr, int pos, int value) {
if (arr.length > MaxSize) {
System.out.println("顺序表已满,无法继续插入数据!");
return false;
}
if (pos < 1 || pos > arr.length + 1) {
System.out.println("插入数据的位置无效,无法插入");
return false;
}
// 因为在java中数组的大小不能动态变化的,所以只能使用新数组
int[] newArr = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
for (int i = newArr.length - 1; i >= pos; i--) {
newArr[i] = newArr[i - 1];
}
newArr[pos - 1] = value;
listTraverse(newArr);
return true;
}
- 顺序表的删除
/**
* 顺序表的删除
*
* @param arr 数组
* @param pos 删除的位置
* @param value 删除的值
* @return
*/
public static boolean listDelete(int[] arr, int pos, int value) {
if (arr.length == 0) {
System.out.println("顺序表为空表,无法删除");
return false;
}
if (pos < 1 || pos > arr.length) {
System.out.println("删除的位置无效");
return false;
}
for (int i = pos - 1; i <