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. 《机器学习基石》---Linear Models for Classification

    1 用回归来做分类 到目前为止,我们学习了线性分类,线性回归,逻辑回归这三种模型.以下是它们的pointwise损失函数对比(为了更容易对比,都把它们写作s和y的函数,s是wTx,表示线性打分的分数) ...

  2. MQTT的学习之Mosquitto安装和使用

    Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...

  3. (转)2019年给Java编程初学者的建议(附学习大纲)

    本文链接:https://blog.csdn.net/javajlb/article/details/85920904 1. 引言这是一篇初学者干货,请耐心看完,希望对你有帮助 作为初学者的你,命中了 ...

  4. python学习笔记(6)--面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.   引言 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做(人狗大战)的游戏,你就思 ...

  5. jmeter+Fiddler:通过Fiddler抓包生成jmeter脚本

    Fiddler是目前最常用的抓包工具之一,它作为客户端和服务器端之间的代理,记录客户端和服务器之间的所有请求(http/https),可以针对特定的请求过滤,分析请求和响应的数据.设置断点.调试.修改 ...

  6. 用代码说话:synchronized关键字和多线程访问同步方法的7种情况

    synchronized关键字在多线程并发编程中一直是元老级角色的存在,是学习并发编程中必须面对的坎,也是走向Java高级开发的必经之路. 一.synchronized性质 synchronized是 ...

  7. JavaScript在web自动化测试中的作用

    前言 JS的全称JavaScript,是一种运行在浏览器中的解释型脚本语言,通常用来实现web前端页面的基本功能,对于前端开发人员是不得不掌握的一门基本技能,但是对于做web自动化测试的人员来说,如果 ...

  8. SpringBoot 配置 AOP 打印日志

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

  9. SynchronousQueue队列程序的执行结果分析

    public static void main(String[] args) throws Exception { /** * SynchronousQueue队列程序的执行结果分析 * Blocki ...

  10. 简单架构:反射实现抽象工厂+IDAL接口完全独立DAL

    一.普通架构中存在的问题 StudentDB数据库,包含一张StudentInfoTB表,结构如下: s_id int primary key identity(1,1), s_name Nvarch ...