常用数据结构增删改查java实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一,顺序表:*************************************************************** /**
* 顺序表
* @author WangGuiXi
* 2015年11月9日
*/
publicclass Sequence {
publicstaticvoid main(String args[]){
SLType sl = new SLType();
System.out.println("顺序表操作...");
Scanner input = new Scanner(System.in);
while(true){
Data data = new Data();
System.out.println("1,请输入顺序表数据(id name age):");
data.id = input.nextInt();
if(data.id != 0){
//插入数据
= input.next();
data.age = input.nextInt();
sl.append(sl, data);
}else{
break;
}
}
System.out.println("2,插入数据,请输入插入位置:");
int iid = input.nextInt();
System.out.println("3,请输入插入数据内容(id name age):");
Data insData = new Data();
insData.id = input.nextInt();
= input.next();
insData.age = input.nextInt();
sl.insert(sl, insData, iid);
//显示所有结点
System.out.println("=========== 所有结点 ===========");
sl.show(sl);
//查询结点
System.out.println("4,请输入要查询的结点id:");
int sid = input.nextInt();
Data data = sl.get(sl, sid, null);
if(data != null){
System.out.printf("查询到数据:%d %s %d\n", data.id, , data.age);
}
System.out.println("5,请输入查询结点的name关键字:");
String name = input.next();
Data data2 = sl.get(sl, 0, name);
if(data2 != null){
System.out.printf("查询到数据:%d %s %d\n", data2.id, , data2.age);
}
System.out.println("6,请输入删除结点id:");
int did = input.nextInt();
boolean reVal = sl.del(sl, did);
if(reVal){
System.out.println("删除成功!结点数据如下:");
sl.show(sl);
}
}
}
/**
* 顺序表
* @author WangGuiXi
*
*/
class SLType{
int MAXLEN = 100;
Data[] listData = new Data[MAXLEN + 1];
int currLen = 0;
/**
* 追加数据
* @param sl
* @param data
*/
publicboolean append(SLType sl, Data data){
if(currLen>= MAXLEN){
System.out.println("顺序表已满,添加结点失败!");
returnfalse;
}
sl.listData[++currLen] = data;
//System.out.printf("ok! %d %s %d\n", data.id, , data.age);
returntrue;
}
/**
* 在id后插入数据
* @param sl
* @param data
* @param id
* @return
*/
publicboolean insert(SLType sl, Data data, int id){
if(id< 1 || id>currLen){
System.out.println("非法的结点id");
returnfalse;
}
if(id>= MAXLEN){
System.out.println("数组越界!");
returnfalse;
}
for(int i = currLen; i>= id; i--){
sl.listData[i + 1] = sl.listData[i];
}
sl.listData[id] = data;
currLen++;
returntrue;
}
/**
* 显示数据
*/
publicvoid show(SLType sl){
for(int i = 1; i<= currLen; i++){
System.out.printf("%d %s %d\n", sl.listData[i].id, sl.listData[i].name, sl.listData[i].age);
}
}
/**
* 删除数据
*/
publicboolean del(SLType sl, int id){
if(id< 1 || id>currLen){
System.out.println("id不正确!");
returnfalse;
}
for(int i = id; i<= currLen; i++){
sl.listData[i] = sl.listData[i + 1];