Java设计一个有序递增的顺序表,实现元素比较大小后再插入,删除等操作
时间: 2024-05-21 13:13:23 浏览: 17
可以使用Java中的ArrayList和Collections.sort()方法来实现有序递增的顺序表。在插入元素时,先使用Collections.binarySearch()方法查找插入位置,然后使用ArrayList.add()方法插入元素。在删除元素时,先使用Collections.binarySearch()方法查找元素位置,然后使用ArrayList.remove()方法删除元素。
相关问题
Java设计一个有序递增顺序表,实现元素比较大小后插入、删除等操作
public class SortedList<T extends Comparable<T>> {
private T[] array;
private int size;
public SortedList(int capacity) {
array = (T[]) new Comparable[capacity];
size = 0;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == array.length;
}
public int size() {
return size;
}
public void insert(T data) {
if (isFull()) {
throw new RuntimeException("List is full");
}
int i;
for (i = 0; i < size; i++) {
if (array[i].compareTo(data) >= 0) {
break;
}
}
for (int j = size - 1; j >= i; j--) {
array[j + 1] = array[j];
}
array[i] = data;
size++;
}
public void delete(T data) {
int i = find(data);
if (i == -1) {
throw new RuntimeException("Data not found");
}
for (int j = i; j < size - 1; j++) {
array[j] = array[j + 1];
}
size--;
}
public int find(T data) {
for (int i = 0; i < size; i++) {
if (array[i].equals(data)) {
return i;
}
}
return -1;
}
public void display() {
for (int i = 0; i < size; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}
Java实现一个有序递增顺序表,实现元素比较大小后插入,删除等操作
1. 首先定义一个有序递增顺序表类,包含以下成员变量和方法:
```java
public class SortedList {
private int[] data; // 存储元素的数组
private int size; // 元素个数
public SortedList(int capacity) {
data = new int[capacity];
size = 0;
}
public void insert(int value) {
// 1. 找到插入位置
int index = 0;
while (index < size && data[index] < value) {
index++;
}
// 2. 将插入位置及之后的元素向后移动一位
for (int i = size - 1; i >= index; i--) {
data[i + 1] = data[i];
}
// 3. 插入新元素
data[index] = value;
size++;
}
public void delete(int value) {
// 1. 找到要删除的元素位置
int index = 0;
while (index < size && data[index] != value) {
index++;
}
// 2. 将删除位置及之后的元素向前移动一位
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
// 3. 将最后一位设置为0,元素个数减1
data[size - 1] = 0;
size--;
}
public int getSize() {
return size;
}
public int get(int index) {
return data[index];
}
public void print() {
for (int i = 0; i < size; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
```
2. 在 insert 方法中,先找到插入位置,然后将插入位置及之后的元素向后移动一位,最后将新元素插入到插入位置上。
3. 在 delete 方法中,先找到要删除的元素位置,然后将删除位置及之后的元素向前移动一位,最后将最后一位设置为0,元素个数减1。
4. 在 get 方法中,直接返回指定位置的元素。
5. 在 print 方法中,遍历数组输出所有元素。
6. 测试代码如下:
```java
public static void main(String[] args) {
SortedList list = new SortedList(10);
list.insert(5);
list.insert(2);
list.insert(8);
list.insert(3);
list.insert(6);
list.print(); // 2 3 5 6 8
list.delete(3);
list.print(); // 2 5 6 8
System.out.println(list.get(2)); // 6
}
```