1.顺序表的定义
static final int MAXLEN=100; //定义顺序表的最大长度 class DATA { String key; //结点的关键字 String name; int age; } //定义结点 class SLType //定义顺序表结构 { DATA[] ListData = new DATA[MAXLEN+1]; //保存顺序表的结构数组 int ListLen; //顺序表已存结点的数量 }
2.初始化顺序表
void SLInit(SLType SL) //初始化顺序表 { SL.ListLen=0; //初始化为空表 }
3.计算顺序表长度
int SLLength(SLType SL) { return(SL.ListLen); //返回顺序表的元素数量 }
4.插入结点
int SLInsert(SLType Sl,int n,DATA data) { int i; if(SL.ListLen>=MAXLEN) //顺序表结点数量已超过最大数量 { System.out.print("顺序表已满,不能插入结点! "); return 0; //返回0表示插入不成功 } if(n<1||n>SL.ListLen-1) //插入结点序号不正确 { System.out.print("插入元素序号错误,不能插入元素! "); return 0; } for(i=SL.ListLen;i>=n;i--) //将顺序表中的数据向后移动 { SL.ListData[i+1]=SL.ListData[i]; } SL.ListData[n]=data; //插入结点 SL.ListLen++; //顺序表结点数量增加1 return 1; //成功插入,返回1 }
6.追加结点
int SLAdd(SLType SL,DATA data) //增加元素到顺序表尾部 { if(SL.ListLen>=MAXLEN) //顺序表已满 { System.out.print("顺序表已满,不能再添加结点了! "); return 0; } SL.ListData[++SL.ListLen]=data; return 1; }
7.删除结点int SLDelete(SLType SL,int n) //删除顺序表中的数据元素
{ int i; if(n<1||n>SL.ListLen+1) //删除结点序号不正确
{
System.out.print("删除结点序号错误,不能删除结点! ");
return 0;
}
for(i=n;i<SL.ListLen;i++) //将顺序表中的数据向前移动
{
SL.ListData[i]=SL.ListData[i+1];
}
SL.ListLen--; //顺序表元素数量减1
return 1;
}
8.按照序号查找结点
DATA SLFindByNum(SLType SL,int n) { if(n<1||n>SL.ListLen+1) { System.out.print("结点序号错误,不能返回结点! "); return 0; } return SL.ListData[n]; }
9.按照关键字查找结点
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; }
10.显示所有结点
int SLAll(SLType SL) { int i; for(i=1;i<=SL.ListLen;i++) { System.out.print("(%s,%s,%d) ",SL.ListData[i].key,SL.ListData[i].name,SL.ListData[i].age); } }