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. Day_04_xml解析

    xml解析:操作xml文档,将文档中的数据读取到内存中 操作xml文档的方式有两种: 1.解析(读取):将文档中的数据读取到内存中 2.写入:将内存中的数据保存到xml文档中(后期用的并不多) 解析x ...

  2. MarkDown笔记二

    表格 列1|列2|列3 --|--|-- 内容1|内容2|内容3 下例冒号在左为左对齐(默认),在右为右对齐,在俩侧为居中对齐 | 左对齐 | 右对齐 | 居中对齐 | | :-----| ----: ...

  3. Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法

    Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法   之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...

  4. synchronized使用及java中的原子性问题

    1.Synchronized关键字使用 class X { // 修饰非静态方法 synchronized void foo() { // 临界区 } // 修饰静态方法 synchronized s ...

  5. ContOS8 使用yum安装MariaDB

    首先全部删除MySQL/MariaDB(若是首次安装可根据需要跳过此步) 若不清楚MySQL和MariaDB的关系请移步至 Mariadb百科 1.查看系统版本(以下任一命令即可). # cat /p ...

  6. sql 处理数据字段为NULL 若不为空则显示该值,若为空转换成别的值。

    第一种方法: 判断字段是否为空,如果为空转成你要的字符 1.oracle : nvl("字段名",'转换后的值')://字段名是双引号,转换后的值是单引号 2.sql Server ...

  7. redis 记一次搭建高可用redis集群过程,问题解决;Node 192.168.184.133:8001 is not configured as a cluster node

    ------------恢复内容开始------------ 步骤 1:每台redis服务器启动之后,需要将这几台redis关联起来, 2: 关联命令启动之后 报错: Node 192.168.184 ...

  8. JDBCTemplate基本使用

    用了jdbc连接池之后,我们会发现连接对象的复用性更高了,程序整体运行的性能也更高了.但是我们在做JDBC操作的时候还是比较麻烦,要定义sql,执行sql,设置参数,处理结果. 特别是当我们要做查询操 ...

  9. 如何下载安装Python

     github博客传送门 csdn博客传送门 如何下载安装python 第一步: 在python的官网下载python版本,需要下载对应版本(在计算机-属性中查看自己是32位操作系统还是64位操作系统 ...

  10. 【题解】SOFTWARE 二分+搜索/dp

    题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是 ...