算法-->线性表查找

来源:互联网 发布:阿里云邮箱注册页面 编辑:程序博客网 时间:2024/05/22 03:27
package 顺序表中的查找算法;import java.util.Scanner;public class Shuxuchazhao {    public static void main(String[] args) {        int i;        shType s = new shType();// 定义顺序表的变量        Date pdate;// 定义节点保存的指针变量        Scanner sc = new Scanner(System.in);        System.out.print("顺序表操作演示\n");        s.init(s);// 初始化顺序表        System.out.print("初始化顺序表完成\n");        // 循环天界节点数据        do {            System.out.println("输入要添加的节点号:学号,姓名,年纪");            Date date = new Date();            date.key = sc.next();            date.name = sc.next();            date.age = sc.nextInt();            if (date.age > 0) {                // 若 添加 节点 失败                if (s.addLast(s, date) == 0) {                    break;                }            } else {                break;            }        } while (true);        System.out.print("\n顺序表中的节点数据为:\n");        s.LAll(s);        System.out.print("\n亲输入要取出节点的序号:\n");        i = sc.nextInt();        // 按序号 查找节点        pdate = s.Num(s, i);        // 若返回的节点指针部位空        if (!pdate.equals(null)) {            System.out.print("第" + i + "个节点为:<" + pdate.key + "" + pdate.name + "" + pdate.age + ">");        }    }}class Date {    String key;    String name;    int age;}// 定义顺序表结构class shType {    static final int SIZE = 100;    Date[] Ldate = new Date[SIZE];// 保存顺序表的结构数组    int len;// 顺序 表已存 节点的数量    // 初始化顺序表    void init(shType s) {        s.len = 0;// 初始化为空表    }    int length(shType s) {        return s.len;// 返回顺序表的元素数量    }    // 增加元素到顺序表尾    int addLast(shType s, Date date) {        if (s.len == SIZE) {            System.out.print("舒徐表已满,,不能再添加节点了");            return 0;        }        s.Ldate[++s.len] = date;        return 1;    }    // 根据序号返回数据元素    Date Num(shType s, int n) {        if (n < 1 || n > s.len + 1) {            System.out.print("节点序号错误,不能返回 \n");            return null;// 不成功,返回0        }        return s.Ldate[n];    }    // 按关键字查询节点    int byKey(shType s, String key) {        int i;        for (i = 1; i < s.len; i++) {            // 如果找到节点            if (s.Ldate[i].key.compareTo(key) == 0) {                return i;            }        }        return 0;    }    // 显示顺序表中的所有节点    int LAll(shType s) {        int i;        for (i = 1; i < s.len; i++) {            System.out.println("<" + s.Ldate[i].key + " " + s.Ldate[i].name + " " + s.Ldate[i].age + ">");        }        return 0;    }}

这里写图片描述

原创粉丝点击