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实验项目三——采用面向对象的方式设计线性表的更多相关文章

  1. Java实验项目三——宠物商店

    Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...

  2. Java实验项目三——职工类对象数组按照职工生日排序

    Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...

  3. Java实验项目三——递归实现字符串查找和替换操作

    Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...

  4. Java实验项目三——面向对象定义职工类和日期类

    Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...

  5. Java实验项目三——编程实现Person类,学生类的设计及其继承关系

    Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...

  6. Java实验项目三——简单工厂模式

    Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...

  7. Java实验项目三——平面图形和立体图形抽象类

    Program:按照下面要求完成类的设计 (1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性. (2)修改项目三中第2题中所设计的球类.圆柱类,圆锥类.矩形类.三角形类.圆 ...

  8. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  9. Java实验项目二——二维数组实现九九乘法表

    Program:打印乘法口诀表 (1)编写一个方法,参数(二维数组),完成将二维数组中的数据按照行列显示的工作. (2)编写一个测试方法,给出99乘法表,放入到二维数组中,调用(1)中的方法,显示乘法 ...

随机推荐

  1. 校准仪开发日志--2017-10-20 today's question

  2. Oracle中Table函数简单应用实例

    说明 表函数可接受查询语句或游标作为输入参数,并可输出多行数据. 该函数可以平行执行,并可持续输出数据流,被称作管道式输出. 应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表. 优势 1 ...

  3. HDFS的小文件问题

    HDFS 中任何一个文件,目录或者数据块在 NameNode 节点内存中均以一个对象形式表示(元数据),而这受到 NameNode 物理内存容量的限制.每个元数据对象约占 150 byte,所以如果有 ...

  4. protege 构建本体

    这里我们使用的是Protégé-OWL规范. 推理机后的内容主要是实操内容,根据推理机来对protege本体模型的一个操作过程,以加深本体模型的一个规范认识. 一.什么是本体(Ontologie) 本 ...

  5. 1130-host ... is not allowed to connect to this MySql server

    解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 ...

  6. NGINX缓存使用官方指南

    我们都知道,应用程序和网站一样,其性能关乎生存.但如何使你的应用程序或者网站性能更好,并没有一个明确的答案.代码质量和架构是其中的一个原因,但是在很多例子中我们看到,你可以通过关注一些十分基础的应用内 ...

  7. python记录日志

    import logging from logging import handlers# 日志记录 class Logger(object): level_relations = { 'debug': ...

  8. Springboot单元测试@RunWith注解

    1.RunWith 注解 RunWith 就是一个运行器 可以在单元测试的时候,自动创建spring的应用上下文 2.正确使用 pom.xml <dependency> <group ...

  9. ARM Cortex-M嵌入式C基础编程(上)

    ARM Cortex-M嵌入式C基础编程(上) ARM Cortex-M Embedded C Fundamentals/Tutorial -Aviral Mittal 此技术是关于从编写简单的嵌入式 ...

  10. 基本FTP服务: 文件传输协议

    1.服务端虚拟机Server,安装可以提供FTP服务软件 [root@server0 ~]# yum -y install vsftpd 2.虚拟机Server操作,启动 vsftpd服务,设置为开机 ...