博客
关于我
顺序表各种功能的实现
阅读量:336 次
发布时间:2019-03-04

本文共 3274 字,大约阅读时间需要 10 分钟。

顺序表的功能实现

public class Demo09 {    public static void main(String[] args) {        MyArrayList myArrayList = new MyArrayList();        myArrayList.add(0, 1);        myArrayList.add(1, 2);        myArrayList.add(1, 3);        myArrayList.add(2, 4);        myArrayList.show(); // 打印顺序表        myArrayList.add(3, 99);        myArrayList.show();        System.out.println(myArrayList.key(99)); // 判断是否有key元素,true为有        System.out.println(myArrayList.keyNum(99)); // 输出key元素的位置        System.out.println(myArrayList.getPos(3)); // 输出pos下标的元素        myArrayList.replace(3, 88); // 替换pos位置的元素为val        myArrayList.show();        myArrayList.del(88); // 删除第一次出现的关键字key        myArrayList.show();        System.out.println(myArrayList.getLegth()); // 获取长度        myArrayList.clear(); // 清空顺序表        myArrayList.show();    }}class MyArrayList {    public int[] elem;    public int usedSize;    public MyArrayList() {        this.elem = new int[1];    }    public boolean key(int key) {        for (int i = 0; i < this.usedSize; i++) {            if (elem[i] == key) {                return true;            }        }        return false;    }    public int keyNum(int key) {        for (int i = 0; i < this.usedSize; i++) {            if (elem[i] == key) {                return i;            }        }        return -1;    }    public int getPos(int pos) {        if (pos < 0 || pos >= this.usedSize) {            return -1;        }        return this.elem[pos];    }    public void replace(int pos, int val) {        if (pos < 0 || pos >= this.usedSize) {            System.out.println("pos不在范围内");        } else {            this.elem[pos] = val;        }    }    public void del(int key) {        for (int i = 0; i < this.usedSize; i++) {            if (elem[i] == key) {                for (; i < this.usedSize - 1; i++) {                    elem[i] = elem[i + 1];                }                return;            }        }    }    public int getLegth() {        return this.usedSize;    }    public void clear() {        this.elem = new int[this.elem.length];        this.usedSize = 0;    }    public void add(int pos, int data) {        if (this.usedSize == this.elem.length) {            System.out.println("此表已满,需要扩容!");            expand();        }        if (pos < 0 || pos >= this.usedSize) {            return;        }        for (int i = this.usedSize - 1; i >= pos; i--) {            elem[i + 1] = elem[i];        }        elem[pos] = data;        this.usedSize++;    }    public void expand() {        int[] tmp = new int[this.elem.length * 2];        for (int i = 0; i < this.elem.length; i++) {            tmp[i] = this.elem[i];        }        this.elem = tmp;    }    public void show() {        for (int i = 0; i < this.usedSize; i++) {            System.out.print(this.elem[i] + " ");        }        System.out.println();    }}

以上代码实现了一个简单的顺序表类MyArrayList,主要功能包括:

  • 添加元素
  • 判断是否存在指定键值
  • 获取键值对应的位置
  • 获取指定位置的元素
  • 替换指定位置的元素
  • 删除第一次出现的指定键值
  • 获取顺序表长度
  • 清空顺序表
  • 打印顺序表内容
  • MyArrayList通过数组实现顺序表的功能,主要包括以下几个关键方法:

    • key(int key):检查顺序表中是否存在指定的键值
    • keyNum(int key):返回指定键值在顺序表中的位置
    • getPos(int pos):返回指定位置的元素
    • replace(int pos, int val):替换指定位置的元素
    • del(int key):删除第一次出现的指定键值
    • add(int pos, int data):添加元素(支持动态扩容)
    • expand():扩容方法
    • show():打印顺序表内容

    通过实际测试,可以发现该实现在基本功能上是完整的,但在性能上和容错性上还有提升空间。

    转载地址:http://yzbe.baihongyu.com/

    你可能感兴趣的文章
    Python处理Excel数据
    查看>>
    Python基础:集合与文件操作
    查看>>
    Python基础:搭建开发环境(1)
    查看>>
    PYTHON基础:如何阅读N个整数,直到#39;
    查看>>
    Python基础:11变量作用域和闭包
    查看>>
    Python基础: with模式和__enter__ 和 __exit__
    查看>>
    Python基础(7)--函数
    查看>>
    Python基础部分-while循环,格式化输出
    查看>>
    Python基础语法:顺序语句结构
    查看>>
    Python基础语法:理解代码与写代码
    查看>>
    Python基础语法:条件和分支
    查看>>
    Python基础语法:基本数据类型(数字类型和布尔类型)
    查看>>
    Python基础语法:基本数据类型(列表)
    查看>>
    Python基础语法:内置函数
    查看>>
    Python基础语法:你不得不知的几种变量类型
    查看>>
    Python基础语法教程,零基础入门到精通,看完这一篇就够了
    查看>>
    Python基础语法与执行脚本的3种方式
    查看>>
    python基础语法
    查看>>
    python基础语法
    查看>>
    python系列【仅供参考】:python测试开发基础---multiprocessing.Pool
    查看>>