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)中的方法,显示乘法 ...
随机推荐
- 【JVM进阶之路】十三:类加载过程
通过前面的学习,我们了解了Class文件的结构,在Class文件中描述的各类信息,最终都需要加载到虚拟机中之后才能被运行和使用. 接下来,我们开始学习JVM的类加载. 一个类从被加载到虚拟机内存中开始 ...
- 若依框架前端使用antd,IE11浏览器无法正常显示问题
话不多说,直接上才艺,找到vue.config.js,把第11行的 mock 删除掉就 IE11就正常显示了, 然而项目还是不支持IE10 以及以下版本,哪位小伙伴有解决方法,可以留言交流下
- java学习之旅2——set
var set = Collections.synchronizedSet(new HashSet<Integer>()); 可以这样来获得一个同步的集合. 对于HashSet, for循 ...
- java学习之旅
jar文件其实就是一个压缩包,里面包含很多class文件(一个class文件是一个类的字节码).方便在网络上传输.可以规定版本号,更容易进行版本控制. var只能在方法内使用,不能用于定义成员变量. ...
- 详述盒子模型(包含padding、border、margin的详细用法和描述)
提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识. 但是惭愧地说,我之前理解的盒子模型,只是文字上的理解.我知道定义一个元素的宽度和高度时,设置 ...
- openresty 学习笔记番外篇:python访问RabbitMQ消息队列
openresty 学习笔记番外篇:python访问RabbitMQ消息队列 python使用pika扩展库操作RabbitMQ的流程梳理. 客户端连接到消息队列服务器,打开一个channel. 客户 ...
- python_reques接口测试框架,Excel作为案例数据源
一.框架菜单 1.1 common模块 1.2 其他 二.Excel接口测试案例编写 三.读取Excel测试封装(核心封装) excel_utils.py 读取Excel中的数据 import o ...
- Anno微服务Viper(控制面板) 支持在线部署
1.Anno简介? Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.可在线升级部署. 2.Viper简介 Viper 是一个基于Anno微服务引擎开发的Da ...
- Linux系统命令login的翻译
LOGIN(1) 用户命令 LOGIN(1)名称 login - ...
- 孟老板 ListAdapter封装, 告别Adapter代码 (三)
BaseAdapter系列 ListAdapter封装, 告别Adapter代码 (一) ListAdapter封装, 告别Adapter代码 (二) ListAdapter封装, 告别Adapter ...