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. 9.10 nohup:用户退出系统进程继续工作

    nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端.        无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out文件 ...

  2. Git指令大全

    仓库 # 在当前目录新建一个Git代码库 $ git init # 下载一个项目和它的整个代码历史 $ git clone [url] 配置 # 显示当前的Git配置 $ git config --l ...

  3. python做反被爬保护的方法

    python做反被爬保护的方法 网络爬虫,是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.但是当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创得不到保护.于是,很 ...

  4. 0算法基础学算法 搜索篇第二讲 BFS广度优先搜索的思想

    dfs前置知识: 递归链接:0基础算法基础学算法 第六弹 递归 - 球君 - 博客园 (cnblogs.com) dfs深度优先搜索:0基础学算法 搜索篇第一讲 深度优先搜索 - 球君 - 博客园 ( ...

  5. fiddler概念及原理

    一.什么是fiddler? fiddler是位于客户端与服务器端的HTTP代理,它能够记录客户端与服务器之间所有的HTTP请求,可以针对特定的HTTP请求,分析请求数据,设置断点,调试WEB应用,修改 ...

  6. PTA7~9题目集总结与归纳

    前言: 总结三次题目集的知识点.题量.难度等情况. 目录: 题目集7(7-1).(7-2)两道题目的递进式设计分析总结 题目集8和题目集9两道ATM机仿真题目的设计思路分析总结 一. 题目集7(7-1 ...

  7. daily plan

    想了想自己留的坑有点多了,写个计划提醒自己 一些没做出来的题 csp-s模拟测试54 z csp-s模拟测试b层加餐 string 平衡树+并查集 因为某杰的**安排,没时间改了csp-s模拟测试47 ...

  8. 学会使用Python的threading模块、掌握并发编程基础

    threading模块 Python中提供了threading模块来实现线程并发编程,官方文档如下: 官方文档 添加子线程 实例化Thread类 使用该方式新增子线程任务是比较常见的,也是推荐使用的. ...

  9. Redis的事务不是原子性的

    1.事务的四大特性 原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要么全部成功,要么全部失败,不可能停滞在中间某个环节. ...

  10. Linux中ls的用法

    在linux系统中,可以说一切皆文件.文件类型包含:普通文件,目录,字符设备文件,块设备文件,符号链接文件等 我们可以用file这个命令来查看文件的属性: 这里可以看到1.sh是个脚本文件 下面开始介 ...