import java.util.Arrays;
public class SequenceList {
private int size;
private final static int Default_size=5;
private int[] elements;
public SequenceList() {
this.elements = new int[Default_size];
}
public SequenceList(int length) {
if(length<0){
throw new IllegalArgumentException("传入的数组大小不合法");
}
else if(length==0){
this.elements = new int[Default_size];
}
else {
this.elements = new int[length];
}
}
// 新增元素,默认在数组最后新增
public void add(int data) {
if(isFull()){
grow();
}
elements[size++]=data;
}
private boolean isFull(){
return size== elements.length;
}
private void grow(){
elements= Arrays.copyOf(elements,2*elements.length);
}
public boolean contains(int toFind) {
for (int i = 0; i < size; i++) {
if(elements[i]==toFind){
return true;
}
}
return false;
}
// 查找某个元素对应的位置
public int indexOf(int toFind) {
for (int i = 0; i < size; i++) {
if(elements[i]==toFind){
return i;
}
}
return -1;
}
// 获取 pos 位置的元素
public int get(int pos) {
checkPos(pos);
return elements[pos];
}
// 给 pos 位置的元素设为 value
public void set(int pos, int value) {
checkPos(pos);
elements[pos]=value;
}
private void checkPos(int pos){
if(pos<0||pos>size-1)
throw new ArrayIndexOutOfBoundsException("pos的位置不合法 pos="+pos);
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
if(isFull()){
grow();
}
if(pos<0||pos>size){
System.out.println("插入的位置不合法 pos:"+pos);
}else{
for (int i = size; i > pos; i--) {
elements[i] = elements[i-1];
}
elements[pos]=data;
size++;
}
}
//删除第一次出现的关键字key
public void remove(int toRemove) {
if(contains(toRemove)){
int pos=indexOf(toRemove);
for (int i = pos; i <size - 1; i++) {
elements[i] = elements[i + 1];
}
size--;
}
else {
System.out.println("数组中未找到value="+toRemove);
}
}
// 获取顺序表长度
public int size() {
return this.size;
}
// 清空顺序表
public void clear() {
this.size=0;
}
// 打印顺序表
public void display() {
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elements[i]);
if(i!=size-1){
sb.append(",");
}
}
sb.append("]");
System.out.println(sb);
}
}
数据结构顺序表的简单实现
最新推荐文章于 2024-05-28 16:13:50 发布