• 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 }
     
  • 相关阅读:
    0923------APUE 学习笔记----------Linux系统的启动流程
    0915-----Linux设备驱动 学习笔记----------一个简单的字符设备驱动程序
    0815------算法笔记----------矩阵连乘问题
    0806------Linux网络编程----------Echo 网络库 学习笔记
    事件学习
    信息系统需求分析阶段的实践经验之二---如何有效地获得用户需求【转】
    信息系统需求分析阶段的实践经验之一---需求分析概述[转]
    Lambda表达式【转】
    C#委托的介绍(delegate、Action、Func、predicate)【转】
    css3选择器——导图篇
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/4404897.html
Copyright © 2020-2023  润新知