顺序表学生类java_Java语言描述顺序表类,顺序表类的基本操作实现

本文介绍了如何使用Java实现线性表的顺序存储结构,包括顺序表的接口定义和具体实现,以及两个应用实例,涉及字母顺序表和学生成绩表的操作。
摘要由CSDN通过智能技术生成

数据结构(Java版)ch2 线性表的顺序存储(顺序表)

线性表的抽象数据Java接口描述如下:

package ch2;

/**

* 线性表的抽象数据接口,用Java语言描述线性表的这些功能!

* @author 房廷飞

*

*/

public interface IList {

public void clear(); //将线型表置成空表

public boolean isEmpty(); //判断是不是空表

public int length(); //返回线性表的长度

public Object get(int i) throws Exception; //返回线性表中第i个数据元素

public void insert(int i,Object x) throws Exception; //插入x作为第i个元素

public void remove (int i) throws Exception; //s删除第i个元素

public int indexOf(Object x); //查找并返回元素x首次出现的位序号

public void display(); //输出线性表中各个数据元素的值

}

顺序表类的Java语言描述,顺序表类的基本操作实现:

package ch2;

/**

* 用Java语言描述线性表的接口指定功能

* @author 房廷飞

*

*/

public class SqList implements IList{ //执行IList接口

//构造一个存储空间为maxsize的顺序表

private Object[] listItem; //顺序表的存储空间

private int curLen; //顺序表当前的长度

private int maxSize;

//构造一个存储空间为maxsize的顺序表

public SqList (int maxsize) {

curLen=0;

maxSize=maxsize;

listItem=new Object[maxSize];

}

@Override

public void clear() {

// TODO Auto-generated method stub

curLen=0;

}

@Override

public boolean isEmpty() {

// TODO Auto-generated method stub

return curLen==0;

}

@Override

public int length() {

// TODO Auto-generated method stub

return curLen;

}

@Override

public Object get(int i) throws Exception {

// TODO Auto-generated method stub

if(i<0||i>curLen-1)

throw new Exception("第"+i+"个元素不存在!");

return listItem[i];

}

@Override

public void insert(int i, Object x) throws Exception {

// TODO Auto-generated method stub

if (curLen==maxSize)

throw new Exception("顺序表已满,不能插入!");

if (i<0||i>curLen)

throw new Exception("插入位置不合法!");

for(int j=curLen;j>i;j--) { //插入是从最后递减重排序 //标识,可尝试改

listItem[j]=listItem[j-1];

}

listItem[i]=x;

curLen++;

}

@Override

public void remove(int i) throws Exception{

// TODO Auto-generated method stub

if(i<0||i>curLen-1)

throw new Exception("移除位置不合法!");

for(int j=i;j

listItem[j]=listItem[j+1];

}

curLen--;

}

@Override

public int indexOf(Object x) {

// TODO Auto-generated method stub

for(int i=0;i<=curLen;i++) {

if(listItem[i].equals(x)) {

return i;

}

}

return -1;

}

@Override

public void display() {

// TODO Auto-generated method stub

for(int i=0;i

System.out.println(listItem[i]);

}

}

}

通过两个小例子应用顺序表:

demo1:

package ch2;

import java.util.Scanner;

/**

* 例一:建立一个由a-z的26个英文字母组成的字母顺序表,求每个字母的直接前驱和直接后继,编程实现!

* @author 房廷飞

*

*/

public class Practice01 extends SqList{

public Practice01(int maxsize) {

super(maxsize);

// TODO Auto-generated constructor stub

}

public static void main(String[] args) throws Exception {

Practice01 p1=new Practice01(26);

for(int i=0;i<26;i++) {

p1.insert(i,(char)(97+i));

}

System.out.println("请输入要查询的字母位序号(0~25):");

int i = new Scanner(System.in).nextInt();

if(i>0&&i<25) {

System.out.println("第"+i+"个字母的直接前驱为:"+p1.get(i-1));

System.out.println("第"+i+"个字母的直接后驱为:"+p1.get(i+1));

}

else if(i==0) {

System.out.println("第"+i+"个字母的直接前驱不存在,直接后驱为:"+p1.get(i+1));

}

else {

System.out.println("第"+i+"个字母的直接后驱不存在,直接前驱为:"+p1.get(i-1));

}

}

}

demo2:

package ch2;

/**

* 例二:建立一个顺序表,表中数据为5个学生的成绩(89,93,92,90,100),然后查找成绩为90的数据元素,并输出其在数据表中的位置。

* @author 房廷飞

*

*/

public class Practice02 extends SqList{

public Practice02(int maxsize) {

super(maxsize);

// TODO Auto-generated constructor stub

}

public static void main(String[] args) throws Exception {

Practice02 p2=new Practice02(5);

p2.insert(0, 89);

p2.insert(1, 93);

p2.insert(2, 92);

p2.insert(3, 90);

p2.insert(4, 100);

int a=p2.indexOf(90);

if(a==-1) {

System.out.println("顺序表中不存在成绩为90的学生!");

}

else {

System.out.println("顺序表中成绩为90的数据元素的位置为:"+a); //3

}

}

}

数据结构(Java版)ch2 线性表的顺序存储(顺序表)

2019-04-06    17:51:34    房廷飞        加油!

来源:https://www.cnblogs.com/fangtingfei/p/10662397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值