• 学习顺序表,Java实现


    顺序表就是按照顺序存储方式的线性表

     

    /**
     * @PackageName:com.wcy.xianchen.shujujiegou
     * Description 顺序表的定义,操作
     * @date:2022/7/28
     */
    public class SequenceTable {
    
        public static void main(String[] args){
            int i;
            //定义顺序表变量
            SLType SL = new SLType();
            DATA pdata;
            String key;
            System.out.println("顺序表操作演示");
            //初始化顺序表
            SL.SLInit(SL);
            Scanner input = new Scanner(System.in);
            do {
    
                System.out.println("输入添加的学号,姓名,年龄");
                DATA data = new DATA();
                data.key = input.next();
                data.name = input.next();
                data.age = input.nextInt();
                SL.SLAdd(SL,data);
                if (data.age == 0){
                    break;
                }else {
                    continue;
                }
    
            }while (true);
            System.out.println("顺序表中的节点顺序为");
            SL.SLAll(SL);
    
            System.out.println("要取出节点的序号");
            i = input.nextInt();
            pdata = SL.findByNum(SL,i);
            if (pdata != null){
                System.out.println("第"+i+"节点数据"+pdata.key+pdata.name+pdata.age);
            }
    
            System.out.println("根据节点关键字查找");
            key = input.next();
    
            i = SL.SLFintByCont(SL,key);
            pdata = SL.findByNum(SL,i);
            if (pdata != null){
                System.out.println("第"+i+"节点数据"+pdata.key+pdata.name+pdata.age);
            }
        }
    
    }
    
    class DATA{
        //节点关键字
        String key;
        String name;
        int age;
    
        public DATA() {
    
        }
    
        public String getKey() {
            return key;
        }
    
        public void setKey(String key) {
            this.key = key;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    
    /**
     * 定义顺序表结构
     */
     class SLType{
    
        public SLType() {
    
        }
    
        static final int MAXLEN=100;
    
        //保存顺序表的结构数组
        DATA[] listData = new DATA[MAXLEN+1];
        //顺序表已经存储节点的数量
        int listLen;
    
        /**
         * 初始化线性表
         * @param SL
         */
        void SLInit(SLType SL){
            //初始化为空表
            SL.listLen = 0;
        }
    
        int SLLength(SLType SL){
            //返回顺序表的元素数量
            return (SL.listLen);
        }
    
        /**
         * 插入元素
         */
        int SLInsert(SLType SL,int n,DATA data){
            int i;
            if (SL.listLen>= MAXLEN){
                return 0;
            }
            if (n<1 || n > SL.listLen-1){
                return 0;
            }
            //将顺序表中的数据向后移动
            for (i=SL.listLen;i>=n;i--){
                SL.listData[i+1] = SL.listData[i];
            }
            //插入节点
            SL.listData[n]=data;
            SL.listLen++;
            return 1;
        }
    
        /**
         * 添加元素到表尾部
         * @param SL
         * @param data
         * @return
         */
        int SLAdd(SLType SL,DATA data){
    
            if (SL.listLen>= MAXLEN){
                return 0;
            }
            SL.listData[++SL.listLen]=data;
            return 1;
        }
    
        /**
         * 删除节点元素
         * @param SL
         * @param n
         * @return
         */
        int SLDelete(SLType SL,int n){
            int i;
            if (n<1 || n> SL.listLen+1){
                return 0;
            }
            //顺序表向前移动
            for (i=n;i< SL.listLen;i++){
                SL.listData[i] = SL.listData[i+1];
            }
            SL.listLen--;
            return 1;
        }
    
        /**
         * 根据序号返回元素
         * @param SL
         * @param n
         * @return
         */
        DATA findByNum(SLType SL,int n){
            if (n<1 || n> SL.listLen+1){
                return null;
            }
            return SL.listData[n];
        }
    
        /**
         * 按照关键字查找节点
         * @param SL
         * @param key
         * @return
         */
        int SLFintByCont(SLType SL,String key){
            int i;
            for ( i=1;i

     总结:通过理解理论,加上代码实践,将掌握如何操作和定义顺序表

  • 相关阅读:
    全量和已占用字符集
    以太网的概念
    CenOS7各种自启动配置
    for...in 和 for...of 的区别
    【开发】React框架下如何集成H.265网页流媒体EasyPlayer.js视频播放器?
    几何算法——10.欧拉操作
    代码随想录刷题 Day14
    Java Double doubleToRawLongBits()方法具有什么功能呢?
    C++数据结构X篇_12_树的基本概念和存储
    selenium中webdriver常用的ChromeOptions参数
  • 原文地址:https://blog.csdn.net/qq_40213824/article/details/126040619