数据结构(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?trueSize: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
相关文章推荐
- 数据结构小总结
- C++ STL 的底层数据结构实现
- 数据结构(11)线性表之一元多项式表示及相加
- 数据结构和算法笔记
- Java数据结构笔记4——LinkedList
- 【面试】数据结构
- 数据结构——排序(一)
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- 数据结构之树之不同种类篇
- 数据结构中几种常见的排序方法
- 插入排序
- 数据结构(10)线性表之双向链表
- 数据结构与算法学习笔记(五)