java 实现顺序结构线性列表
package com.ncu.list; /**
*
* 顺序结构线性列表
*
* @author liuhao
*
*/
public class SquenceList<T> {
private int size; // 线性表的长度
private Object[] listArray;
private int currenSize = 0; // 当前线性表中的数据 public SquenceList() { } public SquenceList(int size) {
this.size = size;
listArray = new Object[size];
} public void arrayCopy(int index) {
Object newArray[] = new Object[size];
for (int i = 0; i < currenSize; i++) {
if (i >= index) {
newArray[i] = listArray[i + 1];
} else {
newArray[i] = listArray[i];
}
}
listArray = newArray;
newArray = null; // 释放资源
} /**
* 根据索引位置移除元素
*
* @param index
*/
public void remove(int index) {
index = index - 1;
if (index < 0 || index > currenSize) {
System.out.println("线性表索引越界");
}
if (currenSize == 0) {
System.out.println("线性表为空");
} else {
currenSize--;
arrayCopy(index);
if (currenSize == 0) {
listArray = null;
}
}
} /**
* 根据元素内容移除元素
*
* @param element
*/
public void removeLocate(T element) {
for (int i = 0; i < currenSize;) {
if (element.equals(listArray[i])) {
remove(i + 1);
} else {
i++;
}
}
} /**
* 从线性表尾段插入数据
*
* @param element
*/
public void add(T element) {
if (currenSize > size || currenSize < 0) {
System.out.println("线性表索引越界");
} else {
listArray[currenSize] = element;
currenSize++;
}
} private void insert(T element, int index) {
index = index - 1;
if (currenSize > size || currenSize < 0 || index < 0
|| index >= currenSize) {
System.out.println("线性表索引越界");
} else {
Object newArray[] = new Object[size];
for (int i = 0; i < currenSize; i++) {
if (i >= index) {
newArray[index] = element;
newArray[i + 1] = listArray[i];
} else {
newArray[i] = listArray[i];
} }
listArray = newArray;
newArray = null;
currenSize++;
}
} /**
* 在指定索引位置插入数据
*
* @param element
* @param index
*/
public void add(T element, int index) {
if (index == size) {
add(element);
} else {
insert(element, index);
}
} /**
* 删除线性表最后一个元素
*/
public void delete() {
if (isEmpty()) {
System.out.println("线性表为空,不能删除");
} else {
listArray[currenSize - 1] = null;
currenSize--;
}
} /**
* 判读线性表是否为空
*
* @return
*/
public boolean isEmpty() {
if (currenSize == 0) {
return true;
} else {
return false;
}
} /**
* 根据索引找到相应的元素
*
* @param index
* @return
*/
public T get(int index) {
T obj = null;
if (isEmpty() || index > currenSize || index < 0) {
System.out.println("线性表为空,不能删除");
} else {
obj = (T) listArray[index - 1];
} return obj;
} /**
* 清空线性表
*/
public void clear() {
size = 0;
currenSize = 0;
} /**
* 得到线性表当前的元素的个数
*
* @return
*/
public int size() {
return currenSize;
} public void showList() {
if (currenSize > 0) {
for (int i = 0; i < currenSize; i++) {
System.out.println(listArray[i]); }
} else {
System.out.println("线性表为空");
} System.out.println("------------");
} public static void main(String[] args) {
SquenceList<Integer> list = new SquenceList<Integer>(10);
}
}
java 实现顺序结构线性列表的更多相关文章
- [Java算法分析与设计]--线性结构与顺序表(List)的实现应用
说到线性结构,我们应该立马能够在脑子里蹦出"Array数组"这个词.在Java当中,数组和对象区别基本数据类型存放在堆当中.它是一连串同类型数据存放的一个整体.通常我们定义的方式为 ...
- java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
JAVA里面的程序运行流程分三大类: 1,顺序结构:顺序结构就是依次执行每一行代码 2,分支结构:分支结构就是按不同的条件进行分支 3,循环结构:一段代码依条件进行循环执行. 其中,分支结构有两大类: ...
- 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素
/** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...
- Java 流程控制语句 之 顺序结构
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果 有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实 ...
- JAVA顺序结构和选择结构
顺序结构 JAVA的基本结构就是顺序结构,除非特别指明,否则按顺序一句一句执行 顺序结构是最简单的算法结构 语句和语句直接,框与框直接就是按从上到下的顺序执行的,它是由若干个依次执行的处理步骤组成的, ...
- 【Java】流程控制 - 顺序结构、 选择(分支)结构(单分支、双分支、多分支、嵌套)、循环结构(for、while、do...while)、跳转语句(break、continue)
流程控制语句结构 文章目录 流程控制语句结构 一. 顺序结构 1. 输出语句 2. 输入语句 3.code 二.复合语句 三. 分支结构 1. 条件判断 1.单分支结构 2.双分支结构 3.多分支结构 ...
- Java流程控制:顺序结构
一.流程控制 Java中的流程控制语句可以这样分类:顺序结构.选择结构.循环结构.这三种结构就足够解决所有的问题了! 二.顺序结构 描述: Java流程控制的基本结构就是顺序结构,除非特别指明,否则J ...
- java顺序结构、循环结构、选择结构
java顺序结构.选择结构.循环结构 顺序结构: 语句与语句之间,框与框之间是从上到下的顺序进行的,它是由若干个依次执行的处理步骤执组成的,它是任何一个算法都不离开的一种基本算法结构. 选择结构: 1 ...
- Java基础系列(17)- 顺序结构
顺序结构 JAVA的基本结构就是顺序结构,除非特别说明,否则就按照顺序一句一句执行 顺序结构是最简单的算法结构 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的 ...
随机推荐
- 8、Situation-Dependent Combination of Long-Term and Session-Based Preferences in Group Recommendations: An Experimental Analysis ----组推荐中基于长期和会话偏好的情景依赖组合
一.摘要: 背景:会话组推荐系统的一个主要挑战是如何适当地利用群组成员之间的交互引起用户偏好,这可能会偏离用户的长期偏好.长期偏好和群组诱导的偏好之间的相对重要性应该根据具体的群组设置而变化. 本文: ...
- 【NOI2001】食物链
[NOI2001]食物链 题意 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B ...
- C++操作符重载总结operator(小结 更新ing)
操作符重载一个原则是:被操作的数据类型中 至少有一个是自定义的类型(使用class定义类),如果被操作的变量都是基本类型,那么就不能定义操作符重载. 1.如果重载了new,则必须重载delete,因为 ...
- 2019-03-20 用SSIS把Excel中的数据导出来保存到SQLServer中
Control Flow 1.配置 好 图形 2.去变量那 配置好 文件路径 和 存储过程 3.在SQL Server创建对应的存储过程,该存储过程的功能是每次导入是清空原有的数据 4.如果不懂的参考 ...
- 2019-03-18 Python time 将2015年11月20日转换为2015-11-20
#ReportingDate = soup.select('body > div.main > div > div.ctr > div.recruit > ul > ...
- React:关于虚拟DOM(Virtual DOM)
Virtual DOM 是一个模拟 DOM 树的 JavaScript 对象. React 使用 Virtual DOM 来渲染 UI,当组件状态 state 有更改的时候,React 会自动调用组件 ...
- 主流框架(SSH及SSM)配置文件的模板头文件
SSH三大框架整合配置头文件模板如下: 一:Spring配置文件(beans.xml)模板:<beans xmlns="http://www.springframework.or ...
- 将maven中央仓库不存在的jar包添加到本地仓库
这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 jar ,而另一个 Mave ...
- Activity嵌套多个Fragment实现横竖屏切换
一.上图 二.需求 最近项目遇到个横竖屏切换的问题.较为复杂.在此记之. 1.Activity中竖屏嵌套3个Fragment,本文简称竖屏FP1,FP2,FP3. 2.当中竖屏FP1与FP2能够切换为 ...
- 输入password登录到主界面,录入学生编号,排序后输出
n 题目:输入password登录到主界面,录入学生编号,排序后输出 n 1. 语言和环境 A.实现语言 C语言 B.环境要求 VC++ 6.0 n 2. 要求 请编写一个C语言程序.将若干学生编 ...