首页 > 其他 > 详细

顺序表

时间:2020-05-09 03:01:59      阅读:37      评论:0      收藏:0      [点我收藏+]

顺序表

顺序表是线性表以顺序存储方式实现的,存储与内存中的一块连续存储空间。

代码实现

package arraylist;

import java.util.Arrays;

public class ArrayList {

	private Object[] array; // 使用数组存储数据
	private int size; // 顺序表中数据的个数

	// 无参构造
	public ArrayList() {
		this(4);
	}

	// 有参构造
	public ArrayList(int initlength) {
		array = new Object[initlength];
	}

	// 获取顺序表长度
	public int Length() {
		return array.length;
	}
	
	//判断顺序表是否为空
	public boolean isEmpty() {
		return size==0;
	}
	
	//获取顺序表数据个数
	public int size() {
		return size;
	}
	
	// 添加数据,添加位置为i,数据为e
	public void add(int i, Object e) {
		// 先校验位置i是否合理
		if (i < 0 || i > size) {
			throw new RuntimeException("插入索引越界:" + i);
		}
		// 判断是否需要扩容 扩容为原先长度的两倍
		if (size == array.length) {
			// 创建一个新的数组
			array = Arrays.copyOf(array, array.length * 2);
			// 将旧数组的数据存入新数组中
			for (int j = size; j > i; j--) {
				array[j] = array[j - 1];
			}
		}
		// 添加数据
		array[i] = e;
		size++;
	}

	// 在顺序表末尾添加数据
	public void add(Object e) {
		this.add(size, e);
	}
	
	//删除索引位置数据
	public void delete(int i) {
		for(int j=i;j<size;j++) {
			array[j] = array[j+1];
		}
		size--;
	}
	
	//查看索引位置数据
	public Object select(int i) {
		return array[i];
	}
	
	//修改索引位置数据
	public void updata(int i,Object e) {
		array[i] = e;
	}
	// 打印顺序表
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer("[");
		for (int i = 0; i < size; i++) {
			if (i != size - 1) {
				buffer.append(array[i] + ",");
			} else {
				buffer.append(array[i]);
			}
		}
		buffer.append("]");
		return buffer.toString();
	}
}

顺序表

原文:https://www.cnblogs.com/yl-995820/p/12853475.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!