1、这里实现了简单的顺序表的,为空判断、是否已满判断,插入、删除,查询元素下标等功能

public class Linear_List {
private int[] arr; //用来保存数据
private int size; //实际存入数据占用空间大小 /**
* 初始化线性表,声明数组大小
*
* @param initial_size:数组大小
*/
public Linear_List(int initial_size) {
if (initial_size >= ) {
this.arr = new int[initial_size]; //初始化数组
this.size = ; //初始下标为0
} else {
System.out.println("你给的初始值: " + initial_size + "不能小于0");
}
} /**
* 判断线性表满没有
*
* @return :真则满,假未满
*/
public boolean isFull() {
if (this.size == arr.length) {
return true;
} else {
return false;
}
} /**
* 判断线性表是否为空
*
* @return :真则空,假未空
*/
public boolean isEmpty() {
if (this.size == ) {
return true;
} else {
return false;
}
} /**
* 1、增加元素
*
* @param value :要插入的数据
* @param index :插入的位置
*/
public void addData(int value, int index) {
if (isFull()) {
System.out.println("线性表已满");
} else if (index < || index > arr.length) {
System.out.println("插入的下标越界,您要插入的下标为:" + index);
} else {
for (int i = this.size - ; i >= index; i--) {
arr[i + ] = arr[i]; //依次后移
}
arr[index] = value;
this.size++; //数组元素下标增加
}
} /**
* 2、删除元素
*
* @param value :要删除的数
*/
public void deleteData(int value) {
int pos = find(value);
if (pos == -) {
System.out.println("您要找的 " + value + " 元素不在该线性表中");
} else {
System.out.println("您要删除的 " + value + " 元素下标为:" + pos);
} for (int j = pos; j <= this.size - ; j++) { //这里-2,是因为找到的元素下标,要将后一个的冲掉前一个,会增加一个
arr[j] = arr[j + ];
}
this.size--;
} /**
* 3、查找元素下标
* @param value :所要查找的元素
* @return :返回下标
*/
public int find(int value) {
int pos = -;
if (isEmpty()) {
System.out.println("线性表已空,没有可删除元素");
} else {
for (int i = ; i <= this.size - ; i++) {
if (arr[i] == value) {
pos = i;
}
}
}
return pos;
} /**
* 打印线性表元素
*/
public void print() {
for (int i = ; i <= this.size - ; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
} public static void main(String[] args) {
//初始化顺序表
Linear_List linear_list = new Linear_List();
for (int i = ; i < ; i++) {
linear_list.addData(i + , i);
}
linear_list.print(); //删除
linear_list.deleteData();
linear_list.print(); //增加测试
linear_list.addData(, );
linear_list.print(); //查找元素下标
int find_value = ;
int pos =linear_list.find(find_value);
if (pos == -) {
System.out.println("您要找的 " + find_value + " 元素不在该线性表中");
} else {
System.out.println("您要找的 " + find_value + " 元素下标为:" + pos);
} }
}

2、简单测试结果

1 2 3 4 5 6 7 8 9 10 
您要删除的 5 元素下标为:4
1 2 3 4 6 7 8 9 10
1 5 2 3 4 6 7 8 9 10
您要找的 15 元素不在该线性表中

2、顺序表的实现(java代码)的更多相关文章

  1. 【数据结构】线性表&&顺序表详解和代码实例

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...

  2. 数据结构之线性顺序表ArrayList(Java实现)

    一.ListMe接口: import java.util.ArrayList; //实现线性表(顺序表和链表)的接口://提供add get isEmpty size 功能public interfa ...

  3. 五种编程语言解释数据结构与算法——顺序表2(java与C++语言实现)

    5.java实现方式: 5.1.顺序表的抽象结构 package com.xgp.顺序表; public interface MyList<T> { //1. initList(& ...

  4. 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】

    本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...

  5. javascript数据结构之顺序表

    关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...

  6. 五种编程语言解释数据结构与算法——顺序表1(理论与C语言实现)

    1.线性表的分类 2.线性表的定义及其基本操作 2.1.定义:线性表是具有相同类型的n(n>=0)个元素的有序序列,其中n为表长,当n=0时,该表为空表. 2.3.线性表的逻辑结构为: 2.4. ...

  7. 顺序表JAVA代码

        publicclassSeqList{       final int defaultSize =10;     //默认的顺序表的最大长度     int maxSize;          ...

  8. 数据结构Java实现02----线性表与顺序表

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...

随机推荐

  1. 最新 Flutter 团队工程师中文演讲 | Flutter 的性能测试和理论

    本视频为 Google Flutter 团队的软件工程师 Xiao Yu 在 2018 谷歌开发者大会做的演讲,演讲题目是<Flutter 的性能测试和理论>. 这个视频里将会通过近半个小 ...

  2. SpringBoot 配置 AOP 打印日志

    在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Or ...

  3. springcloud(九):熔断器Hystrix和Feign的全套应用案例(二)

    一.. 创建Eureka-Server 服务中心项目 1. 创建Eureka-Server 服务中心项目架构如下 2. pom.xml <dependencies> <depende ...

  4. 【原创】想了解Mysql事务,知道这些就够了

    Mysql事务:1. 事务进行一次数据库操作时将数据会存到BufferPoll缓存池中2. 数据存入缓存池后,Mysql会新建一个线程将数据存入到RedoLogBuffer中3. 事务提交时RedoL ...

  5. java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present解决方案

    因为JAXB-API是java ee的一部分,在jdk9中没有在默认的类路径中: java ee api在jdk中还是存在的,默认没有加载而已,jdk9中引入了模块的概念,可以使用 模块命令--add ...

  6. MySQL之Xtrabackup的使用

    一.Xtrabackup介绍 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...

  7. MSIL实用指南-数学运算

    C#支持的数学运算是加.减.乘.除.取模,它们对应的指令是Add.Sub.Mul.Div.Rem. 这五个运算都需要两个参数,它们的通用步骤1.生成加载左边变量2.生成加载右边变量3.生成运算指令 实 ...

  8. Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...

  9. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版——小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫“每个人都把自己眼界的局限当成世界的局限”,大学生是

  10. 导航控制器的根控制器 是滚动性&普通的frame区别

    当一个控制器有navigationBar&tabBar: 1.当导航控制器根控制器是tableViewController时,tableView 的frame原点是屏幕左上角,当向tableV ...