package com.dy.xidian;
public class SequenceTable<T> {
// 顺序表总大小
private int maxSize = 50;
private T data[] = (T[]) new Object[maxSize];
// 当前表的长度
private int length;
/**
* 表的大小采用默认方式
*/
public SequenceTable() {
}
/**
*
* @param _maxSize指定表的大小
*/
public SequenceTable(int _maxSize) {
this.maxSize = _maxSize;
}
/**
* 插入操作
*
* @param i
* 插入元素的位置
* @param e
* 插入的元素
* @return 插入后返回的结果成功或失败 元素的其实位置从0开始
*/
public boolean listInsert(int i, T e) {
if (i < 0 || i > length)
return false;
if (length >= maxSize)
return false;
for (int j = length; j > i; j--)
data[j] = data[j - 1];
data[i] = e;
length++;
return true;
}
/**
* 删除操作
*
* @param i
* 要删除元素的位置
* @return 返回成功或失败
*/
public boolean listDelete(int i) {
if (i < 0 || i > length - 1)
return false;
for (int j = i; j < length; j++)
data[j] = data[j + 1];
length--;
return true;
}
/**
* 元素定位
*
* @param e
* 欲查询的元素
* @return 元素的位置
*/
public int locateElem(T e) {
int i;
for (i = 0; i < length; i++)
if (data[i] == e)
return i + 1;
return -1;
}
/**
* 获取元素
*
* @param i
* @return
*/
public T listGet(int i) {
if (i < 0 || i > length - 1)
return null;
return data[i];
}
public static void main(String[] args) {
SequenceTable<Integer> list = new SequenceTable<>();
// 在数组0处插入5
list.listInsert(0, 5);
System.out.println(list.listGet(0));
// 在数组1处插入10
list.listInsert(1, 10);
// 删除数组0处的元素
list.listDelete(0);
System.out.println(list.listGet(0));
}
}
顺序表元素逆置
void reverse(List list){
E e;
for(int i=0; i<list.getLength()/2;i++){
e = list.data[i];
list.data[i] = list.data[list.length-i-1];
list.data[list.length-i-1] = e;
}
}