您的位置:首页 > 理论基础 > 数据结构算法

数据结构(java语言描述)线性表-顺序表

2016-03-16 21:40 197 查看

1.接口的声明:

package class1;

public interface LinearList {

//判断线性表是否为空

public boolean isEmpty();

//返回线性表的长度

public int length();

//判断线性表是否已满

public boolean isFull();

//返回线性表中第i个元素的值

//方法前面时返回的值的类型

public Object get(int index);

//查找线性表中值为x的下标

public int LocateElem(Object x);

//向线性表中插入结点

public boolean insert (int index,Object x);

//删除线性表中下标为i的结点

public boolean delete(int index);

//遍历整个线性表

public void display();

//清空线性表

public void clear();

}

2.类的定义

package class1;

public class SequenceList implements LinearList{

private Object[] data;//线性表以数组形式存在

private int Maxsize;//表空间的最大范围

private int length;//表当前的节点个数,即表长

//构造函数

public SequenceList(int MaxSize){

if(MaxSize>0){

this.Maxsize=MaxSize;

length=0;

data=new Object[MaxSize];

}

}

//判断是否为空

public boolean isEmpty(){

return (length<=0)?true:false;

}

//判断线性表是否已满

public boolean isFull(){

return(length>=Maxsize)?true:false;

}

//返回线性表的大小

public int length(){

return length;

}

//返回线性表中第i个元素的值

public Object get(int i){

return (i<0||i>length)?null:(Object)data[i];

}

//查找线性表中值x的节点

public int LocateElem(Object x){

//查找表中值为x的结点,找到则返回该结点的序号,否则返回-1;

//若表中值为x的结点有多个,找到的是最前面一个

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

if(data[i]==x) return i;

}

return -1;

}

//在线性表的第i个位置插入值为x的结点(下标)

public boolean insert(int i,Object x){

//在表中第i个位置插入值为x的结点

//若插入成功返回true,否则返回false

//插入位置不合理,则插入失败

if(i<0||i>length||length==Maxsize)

return false;

else{

for(int j=length;j>i;j--){

data[j]=data[j-1];

}

data[i]=x;

length++;

//表长+1

return true;

}

}

//删除线性表中的第i个结点data[i-1],若成功返回true,否则返回false;

//第i个结点不存在,删除失败

public boolean delete(int i){

if(i<0||i>length-1||length==0)

return false;

else{

for(int j=i;j<length-1;j++){

data[j]=data[j+1];

}

length--;

return true;

}

}

public void display(){

System.out.println("当前线性表的长度:"+length());

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

System.out.println("第"+i+"个结点为:"+data[i]);

}

}

//清空线性表

public void clear(){

if(length!=0){

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

data[i]=null;

}

length=0;

}

}

}

3.主程序

package class1;

public class li1 {

public static void main(String[] args){

SequenceList s=new SequenceList(10);

System.out.println("Is Empty?"+s.isEmpty());

System.out.println("Size:"+s.length());

s.insert(0,"Jack");

s.insert(1,"John");

System.out.println("s insert?"+s.insert(1,"John"));

s.insert(2,"Lily");

s.insert(3,"Lucy");

s.insert(4,"Lei");

System.out.println("Is Empty?"+s.isEmpty());

System.out.println("Is Full?"+s.isFull());

System.out.println("Size:"+s.length());

s.delete(2);

System.out.println("Size:"+s.length());

System.out.println(s.get(0));

System.out.println(s.LocateElem("Lei"));

s.display();

s.clear();

System.out.println("Size:"+s.length());

}

}

4.执行结果

Is Empty?true

Size:0

s insert?true

Is Empty?false

Is Full?false

Size:6

Size:5

Jack

3

当前线性表的长度:5

第0个结点为:Jack

第1个结点为:John

第2个结点为:Lucy

第3个结点为:Lei

第4个结点为:John

Size:0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: