Java数据结构之线性表

线性表基本概念

线性表是其组成元素间具有线性关系的一种线性结构,是由n个数据类型相同的元素构成的有限序列。其具有“一对一”的逻辑关系,与位置有关,除了头尾元素之外,每一个元素都有唯一的前驱元素和后继元素,即元素ai前面的元素为ai-1,后面的元素为ai+1

抽象数据类型

线性表的抽象数据类型可以用接口描述,其中列举了一些基本的功能,可以自己根据需求扩充:

package ch02;

public interface IList {
	public void insert(int index,Object data) throws Exception;		//在指定位置插入元素
	public void clear();																	//清空线性表
	public void remove(int index);													//删除指定位置元素
	public boolean isEmpty();														//判断线性表是否为空
	public Object get(int index);														//获取指定位置元素
	public int length();																	//获取线性表长度
	public int indexOf(Object data);												//获取指定元素的角标
	public void display();																//输出线性表中所有元素
}

线性表的存储结构和实现

顺序存储结构——顺序表

线性表的顺序存储结构,是把线性表中的所有元素按照其逻辑顺序,依次存储到计算机在内存中指定的一块连续存储空间中,成为顺序表。
元素在内存中的物理存储位置和他们在线性表中的逻辑位置一致

特点
  1. 在线性表中逻辑上相邻的元素在物理存储位置上也相邻;
  2. 可按照数据元素的索引号进行随机存取,时间复杂度为O(1)
  3. 插入、删除操作需要移动大量的元素,时间复杂度为O(n)
  4. 需要预先分配存储空间,可能会造成空间浪费,但存储密度高,数据紧凑。
描述

常使用数组作为顺序表的底层数据结构进行存储。

package ch02;

public class SqList implements IList {
	private Object[] listItem;		//顺序表的存储空间大小;
	private int curLen;				//顺序表的当前长度
	private int maxSize;			//顺序表的最大尺寸
	
	//构造最大尺寸为maxSize的顺序表
	SqList(int maxSize){
		this.maxSize = maxSize;
		this.curLen = 0;
		this.listItem &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值