主类:
public class Start {
public static void main(String[] args) {
LinearList linearList = new LinearList(5);
System.out.println("--插入元素测似(1):--");
linearList.tailInsert(10);
linearList.tailInsert(20);
linearList.tailInsert(30);
linearList.tailInsert(40);
linearList.tailInsert(50);
linearList.showInfo();
linearList.tailInsert(60);
System.out.println("--删除元素测似:--");
linearList.remove(4);
linearList.showInfo();
linearList.remove(4);
linearList.showInfo();
linearList.remove(1);
linearList.showInfo();
System.out.println("--插入元素测似(2):--");
linearList.insert(50,3);
linearList.showInfo();
linearList.insert(60,4);
linearList.showInfo();
linearList.insert(40,3);
linearList.showInfo();
linearList.insert(40,3);
linearList.showInfo();
}
}
线性表类:
package Class.LinearList;
public class LinearList {
private int length = 0;
private int[] arr;
private static final int MIN_CAPACITY = 3;
// 构造方法一
public LinearList(int length) {
if (length >= MIN_CAPACITY) {
arr = new int[length];
} else {
System.out.println("要求线性表最小长度为3!");
}
}
// 构造方法二
public LinearList() {
this(MIN_CAPACITY);
}
//判断线性表是否为空
public boolean isEmpty() {
return length == 0;
}
// 判断线性表是否为满
public boolean isFull() {
return length == arr.length;
}
// 返回线性表长度
public int size() {
return length;
}
// 返回首个与key相等的元素的索引,查找不成功,返回null(这里是0)
public int keySearch(int key) {
if (isEmpty()) {
throw new RuntimeException("线性表为空!");
}
for (int i = 0; i < length; i++) {
if (arr[i] == key) {
return i;
}
}
System.out.println("线性表中没有该元素");
return 0;
}
// 删除首个与key相等的元素的,返回被删除元素
public void keyRemove(int key) {
if (isEmpty()) {
System.out.println("线性表为空!");
return;
}
for (int i = 0; i < length; i++) {
if (arr[i] == key) {
arr[i] = 0;
length--;
return;
}
}
System.out.println("线性表中没有该元素");
}
// 插入value,作为第n个元素
public void insert(int value, int n) {
if (isFull()) {
System.out.println("线性表已满");
return;
}
// 插入位置
if (n >= 1 && n <= length + 1) {
for (int i = length; i >= n; i--) {
arr[i] = arr[i - 1];
}
arr[n - 1] = value;
} else if (n > length + 1) {
System.out.println("插入位置过大,自动插入到尾部");
this.insert(value, length + 1);
} else if (n < 1) {
System.out.println("插入位置过小,自动插入到头部");
this.insert(value, 1);
}
length++;
}
// 在尾部插入value元素
public void tailInsert(int value) {
this.insert(value, length + 1);
}
// 删除第n个元素
public void remove(int n) {
if (isEmpty()) {
throw new RuntimeException("线性表为空!");
}
if (n >= 1 && n <= length) {
for (int i = n - 1; i <= length - 2; i++) {
arr[i] = arr[i + 1];
}
arr[length - 1] = 0;
length--;
} else {
throw new RuntimeException("删除位置有误");
}
}
// 设置第n个元素为value
public void setValue(int value, int n) {
if (isEmpty()) {
System.out.println("当前线性表为空");
}
if (n > length || n < 1) {
System.out.println("访问越界");
return;
} else {
arr[n - 1] = value;
}
}
//
public void showInfo() {
for (int i = 0; i < length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("");
}
}
版权声明:本文为qq_59524897原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。