博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java--顺序表插入与删除
阅读量:3940 次
发布时间:2019-05-24

本文共 2438 字,大约阅读时间需要 8 分钟。

注意: 明确循环起点与终点

对于顺序表,插入数据依次后移(从后向前);删除数据依次前移(从前往后)
》》 对于空间不够的情况,进行扩容。`
》》 对数据合法性进行效验

// 顺序表的元素类型 intpublic class MyArrayList {	// 属性是什么	private int[] array;		// 代表的是存在数据的数组								// array.length 代表的是数组的容量	private int size;			// 记录顺序表的已有数据个数		// 构造方法	public MyArrayList() {		// 1. 申请空间		array = new int[2];		// 2. 初始化数据个数		size = 0;	}		// 增(重点)	// 平均 O(1)	public void pushBack(int element) {		ensureCapacity();		array[size++] = element;	}		public void pushFront(int element) {		ensureCapacity();		for (int i = size; i >= 1; i--) {			array[i]  = array[i - 1];		}				array[0] = element;		size++;	}		public void insert(int index, int element) {		if (index < 0 || index > size) {			System.err.println("下标错误");			return;		}				ensureCapacity();				for (int i = size - 1; i >= index; i--) {			array[i + 1] = array[i];		}		array[index] = element;		size++;	}		// 删(重点)	public void popBack() {		if (size <= 0) {			System.err.println("顺序表为空");			return;		}		array[--size] = 0;	}		public void popFront() {		if (size <= 0) {			System.err.println("顺序表为空");			return;		}				for (int i = 0; i < size - 1; i++) {			array[i] = array[i + 1];		}				array[--size] = 0;	}		public void earse(int index) {		if (size <= 0) {			System.err.println("顺序表为空");			return;		}				if (index < 0 || index >= size) {			System.err.println("下标错误");			return;		}				for (int i = index + 1; i < size; i++) {			array[i - 1] = array[i];		}				array[--size] = 0;	}			// 打印	public void print() {		System.out.println("打印顺序表: 当前容量: " + array.length);		for (int i = 0; i < size; i++) {			System.out.print(array[i] + " ");		}		System.out.println();	}		// 保证容量够用,否则进行扩容	private void ensureCapacity() {		if (size < array.length) {			return;		}				int newCapacity = array.length * 2;		int[] newArray = new int[newCapacity];		for (int i = 0; i < size; i++) {			newArray[i] = array[i];		}		array = newArray;	}		public static void main(String[] args) {		MyArrayList list = new MyArrayList();		list.print();		list.pushBack(1);		list.pushBack(2);		list.pushBack(3);		list.print();	// 1 2 3		list.pushFront(10);		list.pushFront(20);		list.pushFront(30);		list.print();	// 30 20 10 1 2 3		list.insert(3, 100);		list.print();	// 30 20 10 100 1 2 3		list.insert(20, 200);	// 报错				list.earse(2);		list.earse(2);		list.print();	// 30 20 1 2 3		list.popFront();		list.popFront();		list.popFront();		list.print();	// 2 3		list.popBack();		list.popBack();		list.print();	// 空的		list.popBack();	// 报错	}}

在这里插入图片描述

转载地址:http://irjwi.baihongyu.com/

你可能感兴趣的文章
虚拟机VMware中实现linux与windows的共享
查看>>
undefined reference问题总结
查看>>
souce insight 3.5 修改背景颜色
查看>>
Linux 关闭/开启图形界面(X-window) 命令
查看>>
debug 打印 开关 设计(for c || C++)
查看>>
vmware中虚拟机和主机ping不通的问题。
查看>>
从“冷却时间”谈产品设计
查看>>
常用shell脚本
查看>>
长网站 转换为 短网址 的原理
查看>>
基于http协议的C语言客户端代码
查看>>
我常用的makefile之产生优秀的.depend文件
查看>>
VMware无法识别USB设备的解决方法 以及 从虚拟机中断开USB设备,使其重新连接到windows主机上
查看>>
linux下C代码、C++代码和命令行方式,完成字符集编码的转换
查看>>
写代码就像写作文
查看>>
常用shell特殊符号变量一览
查看>>
如何做事
查看>>
架构实践 - 1. 架构风格
查看>>
架构实践 - 3. 基于事件系统的demo
查看>>
架构实践 - 4. 架构设计之进程通信(独立构件风格)
查看>>
架构实践 - 5. 基于进程通信的demo
查看>>