我是小咲,数据结构是一门负责而又神秘的学科,为什么这么说呢,因为不告诉你?
神秘不神秘啊?
说到顺序表,顾名思义不是链表,而是一个个紧挨着的相邻房间的存储方式,下面就来看看代码的实际编写啦
写的代码功能不多 就是头插尾插一类的而已
特别的:ensureCapacity(确保空间大小)
package sequencelist;
import java.util.Arrays;
public class Sequencelist {
//属性
private int[] array;//用来保存数据
private int size;
public Sequencelist() {
array=new int[11];
size=0;//实际元素个数
}
public void pushFront(int element) {
ensureCapcity();
for(int i=size-1;i>=0;i--) {
array[i+1]=array[i];
}
array[0]=element;
size++;
}
public void pushBack(int element) {
array[size++]=element;
}
public void insert(int index,int element) {
//size-1为最后实际数字的下标
for(int i=size-1;i>=index;i--) {
array[i+1]=array[i];
}
array[index]=element;
size++;
}
public void popFront() {
for(int i=0;i<size-1;i++) {
array[i]=array[i+1];
}
size--;
}
public void popBack() {
array[--size]=0;
}
public int[] getArray() {
return array;
}
public void setArray(int[] array) {
this.array = array;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public void erase(int index) {
//中间删除
for(int i=index;i<size;i++) {
array[i]=array[i+1];
}
size--;
}
public int indexOf(int element) {
for(int i=0;i<size;i++) {
if(array[i]==element)
return i;
}
return -1;
}
public int get(int index) {
return array[index];
};
public void set(int index,int element) {
array[index]=element;
}
public String toString() {
return Arrays.toString(Arrays.copyOf(array,size));
//original the array to be copiednewLength the length of the copy to be returned
//a copy of the original array
}
private void ensureCapcity() {
if(size<array.length) {
//不需要扩容
return;
}
//申请新房子
int newCapacity=array.length+array.length/2;
int[] newArray=new int[newCapacity];
//搬家
for(int i=0;i<size;i++) {
newArray[i]=array[i];
}
//发朋友圈
this.array=newArray;
}
public void remove(int element) {
int index=indexOf(element);
if(index!=-1) {
erase(index);
}
}
//o(n^2)
public void removeAll(int element) {
int index;
while((index=indexOf(element))!=-1) {
erase(index);
}
}
//o(n)
public void removeAll2(int element) {
int[] newArray=new int[size];
int j=0;
for(int i=0;i<size;i++)
{
if(array[i]!=element) {
newArray[j++]=array[i];
}
}
for(int i=0;i<j;i++) {
array[i]=newArray[i];
}
size=j;
}
public void removeAll3(int element) {
int j=0;
for(int i=0;i<size;i++) {
if(array[i]!=element) {
array[j++]=array[i];
}
}
size=j;
}
public static void main(String[] args) {
Sequencelist seqList=new Sequencelist();
System.out.println(seqList.toString());
seqList.pushBack(1);
seqList.pushBack(2);
seqList.pushBack(3);
System.out.println(seqList.toString());
seqList.pushFront(10);
seqList.pushFront(20);
seqList.pushFront(30);
int ret=seqList.indexOf(100);
System.out.println(ret);
System.out.println(seqList.toString());
seqList.insert(2, 100);
seqList.insert(4, 200);
System.out.println(seqList.toString());
seqList.erase(10);
System.out.println(seqList.toString());
seqList.popFront();
System.out.println(seqList.toString());
seqList.popBack();
System.out.println(seqList.toString());
seqList.set(1, 60000);
int getNumber=seqList.get(0);
System.out.println(getNumber);
seqList.removeAll3(1);
System.out.println(seqList.toString());
}
}