import java.util.Scanner;
class DATA{
//节点的关键字
String key;
String name;
int age;
}
//定义顺序表结构
class SLType{
static final int MAXLEN=100;
DATA[] ListData=new DATA[MAXLEN+1];//保存顺序表的结构数组
int ListLen;//保存的节点数量
//初始化顺序表
void SLInit(SLType SL){
SL.ListLen=0;//初始化为空表
}
//获取顺序表的长度
int SLLength(SLType SL){
return (SL.ListLen);//返回顺序表的元素数量
}
//插入节点
int SLInsert(SLType SL,int n,DATA data){
int i;
if(SL.ListLen>=MAXLEN){//长度大于最大长度不能进行插入
System.out.println("顺序表已满,不能插入节点!");
return 0;//返回插入失败
}
//插入元素位置的范围在[1,SL.ListLen]
if(n<1||n>SL.ListLen){
System.out.println("插入元素序号错误,不能插入元素!");
}
//将顺序表中从插入位置n开始的数据向后移动
for(i=SL.ListLen;i>=n;i--){
SL.ListData[i+1]=SL.ListData[i];
}
SL.ListData[n]=data;//插入节点
SL.ListLen++;//顺序表长度+1
return 1;//返回插入成功
}
//添加节点
int SLAdd(SLType SL,DATA data){
if(SL.ListLen>=MAXLEN){//长度大于最大长度不能进行添加
System.out.prinln("顺序表已满,不能再添加节点了!");
return 0;//返回添加失败
}
//添加元素的同时表长度也要+1
SL.ListData[++SL.ListLen]=data;
return 1;//返回添加成功
}
//删除节点
int SLDelete(SLType SL,int n){
int i;
if(n<1||n>SL.ListLen){//删除节点序号不正确
System.out.println("删除节点错误,不能剔除节点!");
return 0;//返回删除失败
}
//数据前移
for(i=n;i
SL.ListData[i]=SL.ListData[i+1];
}
SL.ListLen--;//表长度-1
return 1;//返回删除成功
}
//根据序号返回数据元素
DATA SLFindByNum(SLType SL,int n){
if(n<1||n>SL.ListLen){
System.out.println("节点序号错误,不能返回节点!");
return null;//返回数据失败
}
return SL.ListData[n];
}
//按关键字查询节点
int SLFindByCont(SLType SL,String key){
int i;
for(i=1;i<=SL.ListLen;i++){
//找到需要的节点,返回节点序号
if(SL.ListData[i].key.compareTo(key)==0){
return i;
}
}
return 0;
}
//显示顺序表中的所有节点
void SLAll(SLType SL){
int i;
for(int i=1;i<=SL.ListLen;i++){
System.out.println(SL.ListData[i].toString());
}
}
}