线性表-顺序表
创始人
2024-04-19 22:48:35
0

线性表

线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。

  • 前驱元素:若A元素在B元素的前面,则称A为B的前驱元素
  • 后继元素:若B元素在A元素的后面,则称B为A的后继元素

线性表的分类
线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。

顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上响铃的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系

在这里插入图片描述
顺序表API设计
类名 SequenceList
构造方法SequenceList(int capacity):创建容量为capacity的SequenceList对象
成员方法
1.public void clear():空置线性表
2.publicboolean isEmpty():判断线性表是否为空,是返回true,否返回false
3.public int length():获取线性表中元素的个数
4.public T get(int i):读取并返回线性表中的第i个元素的值
5.public void insert(int i,T t):在线性表的第i个元素之前插入一个值为t的数据元素。
6.public void insert(T t):向线性表中添加一个元素t
7.public T remove(int i):删除并返回线性表中第i个数据元素。
8.public int indexOf(T t):返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回-1。
成员变量
1.private T[] eles:存储元素的数组
2.private int N:当前线性表的长度

package com.vmware.list;import java.util.Iterator;public class SequenceList implements List, Iterable {private T[] els;private int count;@SuppressWarnings(value = "unchecked")public SequenceList(int capacity) {this.els = (T[]) new Object[capacity];}@Overridepublic void clear() {//清空数据for (int index = 0; index < count; index++) {els[index] = null;}count = 0;}@Overridepublic boolean isEmpty() {return count == 0;}@Overridepublic int length() {return count;}@Overridepublic T get(int index) {return els[index];}@Overridepublic void insert(T t) {if (count == els.length) {capacityExpansion(els.length << 1);}els[count++] = t;}@Overridepublic void insert(T t, int index) {if (count == els.length) {capacityExpansion(els.length << 1);}//将指定索引之后的元素后移一位for (int start = count; start > index; start--) {els[start] = els[start - 1];}els[index] = t;count++;}@Overridepublic T remove(int index) {T t = els[index];for (int i = index; i < count; i++) {els[i] = els[i + 1];}count--;if (count < els.length / 4) {capacityExpansion(els.length >> 1);}return t;}@Overridepublic int indexOf(T t) {for (int i = 0; i < count; i++) {if (els[i] == t) {return i;}}return -1;}@Overridepublic Iterator iterator() {return new SItr();}private class SItr implements Iterator {private int cursor;public SItr() {cursor = 0;}@Overridepublic boolean hasNext() {return cursor < count;}@Overridepublic T next() {//获取元素并右移指针return els[cursor++];}}/*** @apiNote 扩容*/@SuppressWarnings(value = "unchecked")private void capacityExpansion(int size) {T[] newArr = (T[]) new Object[size];//复制原数组内容for (int index = 0; index < count; index++) {newArr[index] = els[index];}els = newArr;}
}

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...