2、顺序表的实现(java代码)
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代码)的更多相关文章
- 【数据结构】线性表&&顺序表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...
- 数据结构之线性顺序表ArrayList(Java实现)
一.ListMe接口: import java.util.ArrayList; //实现线性表(顺序表和链表)的接口://提供add get isEmpty size 功能public interfa ...
- 五种编程语言解释数据结构与算法——顺序表2(java与C++语言实现)
5.java实现方式: 5.1.顺序表的抽象结构 package com.xgp.顺序表; public interface MyList<T> { //1. initList(& ...
- 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】
本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...
- javascript数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
- 五种编程语言解释数据结构与算法——顺序表1(理论与C语言实现)
1.线性表的分类 2.线性表的定义及其基本操作 2.1.定义:线性表是具有相同类型的n(n>=0)个元素的有序序列,其中n为表长,当n=0时,该表为空表. 2.3.线性表的逻辑结构为: 2.4. ...
- 顺序表JAVA代码
publicclassSeqList{ final int defaultSize =10; //默认的顺序表的最大长度 int maxSize; ...
- 数据结构Java实现02----线性表与顺序表
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 线性表 及Java实现 顺序表、链表、栈、队列
数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...
随机推荐
- zabbix自发现item监控
在zabbix监控中,我们可以通过自带item的可以和自定义key进行监控,但是当所需要的监控项不确定,比如key会根据时间进行变化时,这时候我们就不能把item的key定义死,要通过自发现这个高级功 ...
- 【JVM从小白学成大佬】2.Java虚拟机运行时数据区
目录 1.运行时数据区介绍 2.堆(Heap) 是否可能有两个对象共用一段内存的事故? 3.方法区(Method Area) 4.程序计数器(Program Counter Register) 5.虚 ...
- 使用charls抓包微信小程序的解决方案(终极解决,各种坑不怕,亲测可用,不服来战!)
第一步:使用charles进行https抓包 https://www.jianshu.com/p/7a88617ce80b 使用charles进行https抓包 使用Charles进行HTTPS抓 ...
- gRPC快速入门记录
为什么使用grpc 1.protocl buffer一种高效的序列化结构. 2.支持http 2.0标准化协议. http/2 1.http/2对每个源只需创建一个持久连接,在这一个连接内,可以并行的 ...
- 行车记+翻车记:.NET Core 新车改造,C# 节能降耗,docker swarm 重回赛道
非常抱歉,10:00~10:30 左右博客站点出现故障,给您带来麻烦了,请您谅解. 故障原因与博文中谈到的部署变更有关,但背后的问题变得非常复杂,复杂到我们都在怀疑与阿里云服务器 CPU 特性有关. ...
- 2015-11-13 linux基础笔记
1.安装linux 使用光盘,版本CENSOS6.6 2.命令过长请使用\ 后enter键换行转义 直到不需要转义后回车运行 3.linux 大小写敏感 4.显示terminal 输出语言 ec ...
- SpringBoot中使用rabbitmq,activemq消息队列和rest服务的调用
1. activemq 首先引入依赖 pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId& ...
- 使用jQuery.extend创建一个简单的选项卡插件
选项卡样式如图,请忽略丑陋的样式,样式可以随意更改 主要是基于jquery的extend扩展出的一个简单的选项卡插件,注意:这里封装的类使用的是es6中的class,所以不兼容ie8等低版本浏览器呦! ...
- 面试必备:常考Java基础知识总结(持续更新)
面试必备:常考Java基础知识总结(持续更新) 本文的Java方面基础知识是我在面试过程中的积累和总结. Java基本数据类型.所占空间大小及对应包装类 基本类型 大小 包装类 boolean - B ...
- React之 redux 的简单介绍及使用
1.为什么使用redux?在小型react项目的开发中 ,view(视图层)中的数据模型(即数据),可以存放在组件中的 state 对象,换句话说页面中的动态数据存放在 state 中. 但对于开发大 ...