顺序表常见操作有插入、删除、查找、修改。 一、插入: 1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。 2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移动的话,会造成后一个元素被前一个元素覆盖,而丢失数据且造成重复。arr[i+1]=arr[i],注意此处i的意思是要移动的元素的下标。 3.任意位置插入与头插类似,从后往前(要插入的位置元素下标)依次向后移动,再将数据插入 二.删除 1.删除有头删、尾删、任意位置删除,要注意删除前,原顺序表是否为空的异常情况。 2.头删与头插相反,是从前往后依次向前移动,即后一个元素arr[i+1]覆盖前一个元素arr[i].arr[i]=arr[i+1] 3.不论查找还是删除,在确定循环语句的初始值和条件时都要仔细思考可取范围 三.查找和修改 查找和修改要注意目标位置的下标不能越界 四.扩容 在java语言中,扩容一般扩为原来的1.5倍,是一种习惯的规范,不是死规则。 最后,附上完整代码,包括初始化、插入、删除、查找、修改、扩容、删除顺序表的相同元素。

import java.util.Arrays;
public class SeqList1{
	private int[] array;
	private int size;
	//1.初始化,构造函数
	public	SeqList1(){
		array=new int[11];
		size=0;
	}
	//2.头插
	public void pushFront(int element){
		ensureCapacity();
		for(int i=size-1;i>=0;i--){// i代表的数据元素的下标,从后往前移动
			array[i+1]=array[i];
		}
		array[0]=element;
		size++;
	}
	//3.尾插
	public void pushBack(int element){
		ensureCapacity();
		array[size++]=element;
	}
	
	//4.中间插 
	public void insert(int index,int element){
		if(index<0||index>size){
			System.out.println("下标异常,不能插入");
		}
		ensureCapacity();
		for(int i=size;i>=index;i--){
			array[i+1]=array[i];
		}
		array[index]=element;
		size++;
	}
			
	//5.头删
	public void popFront(){
		if(size==0){
		System.out.println("空表");
		}
		for(int i=0;i<size;i++){
			array[i]=array[i+1];
		}
		size--;
	}
	
	//6.尾删
	public void popBack(){
		if(size==0){
	System.out.println("空表");
		}
	size--;}
	//7.中间删
	public void erase(int index){
		if(index<0||index>=size){
			System.out.println("下标异常,不能删除");
		}
		for(int i=index;i<size;i++){
			array[i]=array[i+1];
		}
		size--;
	}
	
	//8.查找
	public int indexOf(int element){
		for(int i=0;i<size;i++){
			if(array[i]==element){
				return i;
			}
		}
			return -1;
	}
	//9.根据下标,获取元素
	public int get(int index){
	if(index<0||index>=size){
		System.out.println("下标异常");
	}
	for(int i=0;i<size;i++){
		if(array[i]==array[index]){
			return array[i];
		}
	}
			return -1;
}
	
	//10.给定下标,修改元素的值
	public void set(int index,int element){
		for(int i=0;i<size;i++){
			if(i==index){
				array[i]=element;
			}
		}
	}
	//11.显示当前表中元素长度
	public int size(){
		return size;
	}
	//12.判断表是否为空
	public boolean isEmpty(){
		return size==0;
	}
	//13.查询表的容量
	public int capacity(){
		return array.length;
	}
	//14.打印显示表中已有元素
	public String toString(){
		return Arrays.toString(
		Arrays.copyOf(array,size));
	}
	//15.删除表中的一个元素
	public void remove(int element){
		int index=indexOf(element);
		if(index!=-1){
			erase(index);
		}
	}
	//16.删除表中相同元素
	public void removeAll(int element){
		int j=0;
		for(int i=0;i<size;i++){
			if(array[i]!=element){
				array[j++]=array[i];
			}
		}
		size=j;
	}
	//17.扩容
	private void ensureCapacity(){
		if(size<array.length){
			return ;
		}
		//申请空间
		int newCapacity=array.length+array.length/2;
		int[] newArray=new int[newCapacity];
	   //搬家
	   for(int i=0;i<array.length;i++){
		   newArray[i]=array[i];
	   }
	   //官宣
	   this.array=newArray;
}
	public static void test1(String [] args){
		SeqList1 sq = new SeqList1();
		//[]
		System.out.println(sq.toString());
		//头插1 2 3
		sq.pushFront(1);
		sq.pushFront(2);
		sq.pushFront(3);
		System.out.println(sq.toString());
		//尾插10,20,30
		sq.pushBack(10);
		sq.pushBack(20);
		sq.pushBack(30);
		System.out.println(sq.toString());
		//1,2,3,10,20,30
		sq.insert(2,15);
		sq.insert(4,28);
		System.out.println(sq.toString());
		//当前容量
		System.out.println(sq.capacity());
		//尾插
		
		sq.pushBack(10);
		sq.pushBack(2000);
		sq.pushBack(3000);
		// sq.pushBack(4000);
		sq.pushBack(5000);
		sq.pushBack(6000);
		System.out.println("当前容量为"+ sq.capacity());
		//头删
		sq.popFront();
		//尾删
		sq.popBack();
		//中间删
		sq.erase(3);
		System.out.println(sq.toString());
	}
		public static void test2(String [] args){
			SeqList1 s =new SeqList1();
		s.pushBack(1);
		s.pushBack(2);
		s.pushBack(3);
		s.pushBack(4);
		s.pushBack(1);
		s.pushBack(2);
		s.pushBack(3);
		s.pushBack(4);
		// [ 1, 2, 3, 4, 1, 2, 3, 4 ]
		System.out.println(s.toString());
		s.remove(4);
		// [ 1, 2, 3,  1, 2, 3, 4 ]
		System.out.println(s.toString());
		s.removeAll(4);
		// [ 1, 2, 3,  1, 2, 3,  ]
		System.out.println(s.toString());
		}
		public static void main(String[] args){
			test1(args);
			test2(args);
		}
	}