动态数组与线性表

数据结构的逻辑结构

指元素之间的相互关系,是我们想象出来的,并没有实质性存储在电脑中
就是各种东西的组合结果
集合结构
在这里插入图片描述
线性结构
在这里插入图片描述
树形结构(最难)
在这里插入图片描述
图形结构
在这里插入图片描述
顺序存储结构
在这里插入图片描述
链式存储结构
在这里插入图片描述
算法
就是求解一个问题的步骤,一般采用最优解,节省时间空间
算法时间复杂度的定义
常数阶O(1)
执行一次,没有循环体的话随着N增大,运行的次数不会改变
线性阶O(n)
忽略常数,忽略N的系数
对数阶O(logn)
随着N的增大二增大,但是这种增大属于加速度减小的加速运动
平方阶O(n的平方)…

动态数组

线性表
线性表接口的定义

public interface List<E> {
	/*获取线性表中元素个数(线性表的长度)
	 * @return线性表中有效元素的个数
	 * */
	
	public int getSize();
	/*判断线性表是否为空
	 * @return是否为空的布尔值类型
	 * 
	 * */
	public boolean isEmpty();
	/*
	 * 在线性表中指定的index角标添加元素e
	 * @param index指定的角标0<=index<=size
	 * @param e 要插入发元素 
	 * */
	public void add(int index,E e);
	/*在线性表的表头位置插入一个元素
	 * @param e 要插入的元素 指定在角标0处
	 * */
	public void addFirst(E e);
	/*
	 * 在线性表的表尾插入一个元素
	 * @param e 要插入的元素 指定在角标size处
	 * 
	 * */
	public void addLast(E e);
	/*
	 * 在线性表中获取指定index角标处的元素
	 * @param index 指定的角标<=index<size
	 * @return 该角标所对应的元素
	 * */
	public E get(int index);
	/*
	 * 获取线性表中表头的元素
	 * @return 表头元素 index=
	 * */
	
	public E getFirst();
	/*
	 * 获取线性表中表尾的元素
	 * @return表尾的元素 index=size-1
	 * */
	
	public E getLast();
	/* 
	 * 修改线性表中指定index处的元素为新元素e
	 * @param index 指定的角标
	 * @param e新元素
	 * */
	
	public void set(int index,E e);
	/*
	 * 判断线性表中是否包含指定元素e 默认从前往后找
	 * @param e 要判断是否存在的元素
	 * @return 元素的存在性布尔类型值
	 * */
	
	public boolean contains(E e);
	/*
	 * 在线性表中获取指定元素e的角标默认从前往后找
	 * @param e要查询的数据
	 * @return 数据在线性表中的角标
	 * */

	public int find(E e);
	/*
	 * 在线性表中删除指定角标的元素 并返回
	 * @param index指定的角标 0<=index<size
	 * @return 删掉的老元素
	 * */
	public E remove(int index);
	/*
	 * 删除线性表中的表头元素
	 * @return 表头元素
	 * */
	public E removeFirst();
	/*
	 * 删除线性表中的表尾元素
	 * @return 表头元素
	 * */
	public E removeLast(E e);
	/*
	 * 在线性表在删除指定元素e
	 * */
	public void removeElement(E e);
	/*
	 * 清空线性表
	 * */
	public void clear();
	
	
}

顺序线性表
DEFAULT_SIZE=10 容器的默认容量
E[] data 存储数据的容器
size 线性表的有效元素个数
getCapacity data.length表示线性表的最大容量
将一个数组封装成一个线性表

	public ArrayList(E[] arr){
		data=(E[]) new Object[arr.length];
		for(int i=0;i<data.length;i++){
			data[i]=arr[i];
		}
		size=data.length;
	}

线性表扩容缩容
在这里插入图片描述
在这里插入图片描述
toString方法

public String toString() {
		StringBuilder sb=new StringBuilder();
		sb.append("ArrayList: size="+size+",capacity="+data.length+"\n");
		if(isEmpty()){
			sb.append("[]");
		}else{
			sb.append('[');
			for(int i=0;i<size;i++){
				sb.append(data[i]);
				if(i==size-1){
					sb.append(']');
				}else{
					sb.append(',');
				}
			}
		}
		return sb.toString();
	}

线性表主要就是连续的元素添加

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值