Java实验项目三——采用面向对象的方式设计线性表
Program:
采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象。
1、list包中,定义线性表类
1 /*
2 * Description:定义线性表类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-09
7 *
8 * */
9
10 package list;
11
12 public class List {
13
14 private Object[] list; //声明Object类型的数组
15 private int foot; //list数组最后一个元素的下标
16 private static final int MAXSIZE = 10; //list的最大长度
17
18 public List() { //定义无参构造方法,并初始化list数组
19 this.list = new Object[MAXSIZE];
20 this.foot = -1;
21 }
22
23 //返回线性表的长度
24 public int length() {
25
26 return this.foot + 1;
27 }
28
29 //判断当前对象数组是否为空
30 public boolean isEmpty() {
31
32 if( this.foot == -1 ) { //线性表为空
33
34 return true;
35 }else {
36
37 return false;
38 }
39 }
40
41 //判断当前对象数组是否已满
42 public boolean isFull() {
43
44 if( this.foot == MAXSIZE - 1 ) { //线性表已满
45
46 return true;
47 }else {
48
49 return false;
50 }
51 }
52
53 //向线性表添加数据
54 public boolean addEle(Object element) {
55
56 if( !this.isFull() ) {
57
58 this.foot++; //当前下标加1
59 this.list[this.foot] = element;
60
61 return true; //添加成功
62 }else {
63
64 return false; //添加失败
65 }
66 }
67
68 //根据元素值对数组进行搜索,返回目标元素的下标,如果不存在,返回-1
69 public int searchEle(Object element) {
70
71 for( int i = 0; i <= this.foot; i++ ) {
72
73 if( this.list[i] == element ) {
74
75 return i; //存在,返回对应下标
76 }
77 }
78
79 return -1; //不存在,返回-1,
80 }
81
82 //根据指定元素位置删除线性表中的元素
83 public boolean deleteEleByIndex(int index) {
84
85 if( !this.isEmpty() ) { //线性表不为空
86
87 for( int i = index; i < this.foot; i++ ) { //将沿删除元素的后面元素一次前移
88
89 this.list[i] = this.list[i+1];
90 }
91 this.list[this.foot] = null; //最后一个元素置为null
92 this.foot--;
93 return true;
94 }else {
95
96 return false;
97 }
98 }
99
100
101 //根据元素值之删除线性表中的目标元素
102 public boolean deleteEleByValue(Object element) {
103
104 int index = -1;
105 boolean flag = false; //用来标记是否删除成功
106
107 if( !this.isEmpty() ) { //线性表不为空
108
109 index = this.searchEle(element); //根据元素值搜索元素下标
110 if( index != -1 ) { //元素存在
111
112 flag = this.deleteEleByIndex(index); //根据元素下标删除元素,并返回相应的结果
113 }else {
114
115 flag = false;
116 }
117
118 }
119
120 return flag; //返回删除结果
121 }
122
123 //打印线性表元素
124 public void displayList() {
125
126 for( int i = 0; i <= this.foot; i++ ) {
127
128 System.out.println( this.list[i] );
129 }
130 }
131
132
133
134
135 }
2、在main包中,定义TestDemo类,测试线性表
1 /*
2 * Description:定义测试类,测试线性表
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-09
7 *
8 * */
9
10 package main;
11
12
13 import list.List;
14
15 public class TestDemo {
16
17 public static void main(String args[]) {
18
19 List list = new List(); //实例化List类对象
20
21 list.addEle("Hello"); //向线性表中添加元素
22 list.addEle("world");
23 list.addEle("Good");
24 list.addEle("morning");
25
26 //打印线性表的长度
27 System.out.println( "list的长度为:" + list.length() );
28
29 //打印线性表的内容
30 System.out.println( "\nlist的内容为:" );
31 list.displayList();
32
33 //搜索world是否存在
34 System.out.println( "\nworld元素是否存在,不存在返回打印-1,存在打印下标:" + list.searchEle("world") );
35 System.out.println( "\nApple元素是否存在,不存在返回打印-1,存在打印下标:" + list.searchEle("Apple") );
36
37 //删除world元素,并重新打印线性表
38 System.out.println( "\n删除world元素,删除成功返回true,失败返回false:" + list.deleteEleByValue("world") );
39 System.out.println( "\n删除\"world\"后list的内容为:" );
40 list.displayList();
41
42 //删除下标为1的元素,此处应该删除的Good
43 System.out.println( "\n删除下标为1,删除成功返回true,失败返回false:" + list.deleteEleByIndex(1) );
44 System.out.println( "\n删除下标为1的元素后list的内容为:" );
45 list.displayList();
46
47 }
48
49 }
Java实验项目三——采用面向对象的方式设计线性表的更多相关文章
- Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...
- Java实验项目三——职工类对象数组按照职工生日排序
Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...
- Java实验项目三——递归实现字符串查找和替换操作
Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...
- Java实验项目三——面向对象定义职工类和日期类
Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...
- Java实验项目三——编程实现Person类,学生类的设计及其继承关系
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...
- Java实验项目三——简单工厂模式
Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...
- Java实验项目三——平面图形和立体图形抽象类
Program:按照下面要求完成类的设计 (1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性. (2)修改项目三中第2题中所设计的球类.圆柱类,圆锥类.矩形类.三角形类.圆 ...
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- Java实验项目二——二维数组实现九九乘法表
Program:打印乘法口诀表 (1)编写一个方法,参数(二维数组),完成将二维数组中的数据按照行列显示的工作. (2)编写一个测试方法,给出99乘法表,放入到二维数组中,调用(1)中的方法,显示乘法 ...
随机推荐
- Java 事务的隔离级别
引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...
- Lua _G
1.全局变量的原形 在Lua中,要声明全局变量很简单,那就是定义变量的时候,前面不要加上local. 这个神秘的全局变量,其实本质上也是一个table,它把我们创建的全局变量都保存到一个table里了 ...
- Django基本文件配置
1.setting.py (1) ALLOWED_HOSTS = ['*'] (2) INSTALLED_APPS = ['app_name'] (3) TEMPLATES 中的 'DIRS': ...
- ONNX MLIR方法
ONNX MLIR方法 MLIR中的开放式神经网络交换实现. Prerequisites gcc >= 6.4 libprotoc >= 3.11.0 cmake >= 3.15.4 ...
- 用NumPy genfromtxt导入数据
用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...
- 包及权限配置&java存储机理绘制
包及权限配置 包的声明和导入 //声明 package aa.bb.cc; public class A{;} class B{;} //即在java输出目录aa.bb.cc中放入编译后的A.clas ...
- Qt中的布局浅析与弹簧的使用,以及Qt居中的两种方法
1. 布局 为什么要布局: 布局之后窗口的排列是有序的 布局之后窗口的大小发生变化, 控件的大小也会对应变化 如果不对控件布局, 窗口显示出来之后有些控件的看不到的 布局是可以嵌套使用 常用的布局方式 ...
- P1522 [USACO2.4]牛的旅行 Cow Tours(Floyd)
题目描述 Farmer John 的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer Joh ...
- 【NX二次开发】点到矢量或直线的垂点
已知p1.p2.v1求p0 求解: 通过P1点和P2点,先求出v2: 使用 UF_VEC3_dot(),v1点乘v2得到P0与P2之间的距离: 使用UF_VEC3_unitize()将v1单位化: p ...
- .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...