Java算法 -- 顺序表
顺序表结构定义:就是按照顺序存储方式存储的线性表
1 1.定义一个顺序表的基本数据: 2 3 static final int MAXLEN = 100; 4 5 Class Student{ 6 private String number; //学生学号 7 private String name; // 学生姓名 8 private int age; // 学生年龄 9 } 10 11 Class SLT{ 12 Student[] ListData = new Student[MAXLEN]; // 定义一个Student数组来存放学生 13 int ListLen; // 当前数组 14 }
2.对顺序表的操作
**注意判断临界点的情况
- 初始化顺序表
- 获取顺序表的长度
- 往顺序表内插入数据
- 追加节点
- 删除节点
- 查找节点 1)查找节点 2)查找对应学号的节点
- 显示所有节点
1 // 1)初始化顺序表 2 public void initSLT(SLT sl){ 3 sl.ListLen = 0; 4 } 5 // 2)获取顺序表长度 6 public int SLlength(SLT sl){ 7 return sl.ListLen; 8 } 9 // 3)往顺序表中插入节点 10 public boolean insertSLT(SLT sl , int n , Student stu){ 11 boolean judge = false; 12 if(n<0 || n>sl.ListLen -1){ 13 SYSO("插入数据点位置编号不对"); 14 return false; 15 } 16 if(sl.ListLen > MAXLEN){ 17 SYSO("顺序表已经满了"); 18 return false; 19 } 20 for(int i=0;i<sl.ListLen-1;i++){ 21 if( i == n){ 22 //n+ 的部分往后移 23 for(int j=sl.ListLen-1 ;j>n; j -- ){ 24 sl.ListData[j] = sl.ListData[j-1]; 25 } 26 } 27 } 28 sl.ListData[n] = stu; 29 sl.ListLen ++; 30 return true; 31 } 32 // 4)追加节点 33 public boolean STLAdd(STL sl,Student stu){ 34 35 if(sl.ListLen > MAXLEN){ 36 SYSO("顺序表已满,不能添加"); 37 return false; 38 } 39 40 sl.ListData[sl.ListLen + 1 ] = stu; 41 42 } 43 44 // 5) 删除节点 45 public boolean STLDelte(STL sl , int n ){ 46 if(n<0 || n>sl.ListLen -1){ 47 SYSO("插入数据点位置编号不对"); 48 return false; 49 } 50 if(sl.ListLen<=0){ 51 SYSO("顺序表中没有数据可以删除"); 52 return false; 53 } 54 for(int i=0;i<sl.ListLen-1;i++){ 55 if(i == n){ 56 for(int j=n;j<sl.ListLen;j++){ 57 sl.ListData[j]= sl.ListData[j+1] 58 } 59 60 } 61 sl.ListLen --; 62 63 } 64 } 65 // 6)查找节点 66 public Data searchDataByNumber(STL sl , String number){ 67 int i; 68 if(i=1 ;i<SL.ListLen;i++){ 69 if(sl.ListData[i].number.equal(number)){ 70 return sl.ListData[i]; 71 }else 72 { 73 return null; 74 } 75 } 76 } 77 // 7)显示所有节点 78 public void STLAll(STL sl){ 79 int i; 80 for(i=0;i<sl.ListLen -1 ;i++){ 81 SYSO("输出书友节点的内容"); 82 } 83 84 }