/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 《线性表的类表示——数据结构JAVA》
* 作 者: 刘江波
* 完成日期: 2012 年 10 月 12 日
* 版 本 号: V2.0
* 对任务及求解方法的描述部分
* 问题描述:线性表的基本运算
* 程序头部的注释结束
*/
public class LinearList {
private int[] data; //线性表以数组形式存放
private int MaxSize;//表空间的最大范围
private int Last; //表当前结点个数,即表长
//构造函数
public LinearList(int MaxSize) {
if(MaxSize>0){
this.MaxSize = MaxSize;
Last = 0;
//创建表空间
data = new int [MaxSize];
}
}
//判断线性表是否为空
public boolean ListEmpty(){
return (Last <=0)?true:false;
}
//判断线性表是否已满
public boolean ListFull(){
return(Last >= MaxSize)?true:false;
}
//求线性表的长度
public int ListLength(){
return Last;
}
//求线性表中第i个结点的值
public int GetElem(int i){
//若存在,返回结点,否则,返回null;
return(i<0||i>Last)?null:data[i];
}
//查找线性表中值为x的结点
public int LocateElem(int x){
//查找表中值为x的结点,找到则返回该结点的序号;否则返回-1;
//若表中值为x的结点有多个,找到的是最前面的一个;
for(int i=0;i<Last;i++){
if(data[i] == x)return i;
}
return -1;
}
//在线性表中第i个位置插入值为x的结点
public boolean InsertElem(int x,int i){
//在表中第i个位置插入值为x的结点
//若插入成功,则返回true,否则返回false
//插入位置不合理,插入失败
if(i<0||i>Last||Last == MaxSize)
return false;
else
{
//后移
for(int j = Last;j>i;j--)
data[j] = data[j-1];
//插入
data[i] = x;
//表长增一
Last++;
return true;
}
}
//删除线性表的第i个结点
public boolean DeleteElem(int i){
//删除表中第i个结点,若成功,返回true;否则返回false;
//第i个结点不存在,删除失败;
if(i<0||i>=Last||Last == 0)
return false;
else
{
//前移
for(int j=i;j<Last-1;j++)
data[j] = data[j+1];
//表长减1
Last--;
return true;
}
}
public void display(){
System.out.println("当前链表长度:"+ ListLength());
for(int i=0;i<Last;i++)
{
System.out.println("第"+i+"结点为:"+data[i]);
}
}
}