Java算法 -- 顺序表

时间:2021-11-01 13:11:25

顺序表结构定义:就是按照顺序存储方式存储的线性表

 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 }