本文实例为大家分享了java实现顺序表的基本操作,供大家参考,具体内容如下
静态顺序表:使用定长数组存储。
动态顺序表:使用动态开辟的数组存储。
package com.github.sqlist;public interface iquence { // 在 pos 位置插入 val boolean add(int pos, object data); // 查找关键字 key 找到返回 key 的下表,没有返回 -1 int arch(object key); // 查找是否包含关键字 key 是否在顺序表当中(这个和arch有点冲突) boolean contains(object key); // 得到 pos 位置的值 object getpos(int pos); // 删除第一次出现的关键字 key object remove(object key); // 得到顺序表的长度 int size(); // 打印顺序表 void display(); // 清空顺序表以防内存泄漏 void clear();}
package com.github.sqlist;import java.util.arrays;/** 顺序表*/public class myquenceimpl implements iquence { private object[] elem; // 有效数据个数 private int udsize; private static fi反映人物优秀品质的成语nal int default_size = 10; public sqlist() { this.elem = new object[default_size]; this.udsize = 0; } /** * 判断是否为满 * @return 满了返回true,否则返回fal */ private boolean isfull() { return this.elem.length == this.udsize; } /** * 在 pos 位置插入 val * @param pos * 要插入的位置 * @param data * 要插入的值 * @return * 插入成功返回true,否则返回fal */ @override public boolean add(int pos, object data) { // 1. 判断pos位置的合法性 if (pos < 0 || pos > this.elem.length) { return fal; } // 2. 判断是否满了,如果满了进行扩容 if (isfull()) { this.elem = arrays.copyof(this.elem, 2*this.elem.length); } // 3. 把pos位置以及之后的数全部向后挪一个位置 for (int i = this.udsize-1; i >= pos; i--) { this.elem[i+1] = this.elem[i]; } //我国最大的诗歌集 4. 在 pos 位置插入 val this.elem[pos] = data; // 5. 更新长度 this.udsize++; return true; } /** * 判断是否为空 * @return 表为空返回true,否则返回fal */ private boolean impty() { return this.udsize == 0; } /** * 查找关键字 key 找到返回 key 的下表,没有返回 -1 * @param key 关键字的值 * @return 查找成功返回true,失败返回fal */ @override public int arch(object key) { // 1. 判断是否为空 if (impty()) { return -1; } // 2. 遍历查找 for (int i = 0; i < this.elem.length; i++) { // 注意:判断条件不能写成:this.elem[i] == key if (this.elem[i].equals(key)) { return i; } } return -1; } /** * 查找是否包含关键字 key 是否在顺序表当中(这个和arch有点冲突) * @param key 关键字的值 * @return 查找成功返回true,失败返回fal */ @override public boolean contains(object key) { // 1. 判断是否为空 if (impty()) { return fal; } // 2. 遍历查找 for (int i = 0; i < this.elem.length; i++) { // 注意:判断条件不能写成:this.elem[i] == key if (this.elem[i].equals(key)) { return true; } } return fal; } /** * 得到 pos 位置的值 * @param pos 得到的值的位置 * @return 成功得到 pos位置的值返回true,否则返回fal */ @override public object getpos(int pos) { // 1. 判断位置是否合法 if (pos<0 || pos>=this.elem.length) { return null; } // 2. 位置合法 return this.elem[pos]; } /** * 删除第一次出现的关键字 key * @param key 关键字 * @return */ @override public object remove(object key) { // 1. 先查表看有没有这个关键字 // index:关键字下标 int index = arch(key); // 2. 若表里没有这个关键字 if (index == -1) { return null; } // 3. 表里有这个关键字 object data = this.elem[index]; int i; // 删除第一次出现的关键字 key,把key后面的数全部向前挪一个位置 for (i =telecommunication index; i < this.udsize; i++) { elem[i] = elem[i+1]; } this.udsize--; this.elem[i+1] = null; return data; } /** * 得到顺序表的长度 * @return 顺序表的长度 */ @override public int size() { return this.udsize; } /** * 打印顺序表 */ @override public void display() { for (int i = 0; i < this.udsize; i++) { system.out.print(this.elem[i] + " "); } system.out.println(); } /** * 清空顺序表以防内存泄漏 */ @override public void clear() { for (int i = 0; i < this.udsize; i++) { this.elem[i] = null; } }}
package com.github.sqlist;public class testdemo1 { publ感想ic static void main(string[] args) { myquenceimpl myquence = new myquenceimpl(); for (int i = 0; i < 10; i++) { myquence.add(i,i); } system.out.println("在最大值10的范围内插入数据:"); myquence.display(); system.out.println(); for (int i = 10; i < 20; i++) { myquence.add(i,i); } system.out.println("扩容:"); myquence.dexo成员介绍isplay(); system.out.println(); system.out.println("随机位置插入数据:"); myquence.add(9,"list"); myquence.display(); system.out.println(); system.out.println("arch查找一个数据:"+myquence.arch("list")); system.out.println("contains查找一个数据:"+myquence.contains("list")); system.out.println(); system.out.println("查找某一个位置对应的值:"+myquence.getpos(9)); system.out.println(); system.out.println("删除一个数据:"+myquence.remove(8)); myquence.display(); system.out.println(); system.out.println("得到顺序表的长度:"+myquence.size()); }}
测试结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 16:59:17,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6d499820e1bec445a2a565a21c2f2e48.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java实现顺序表的操作.doc
本文 PDF 下载地址:Java实现顺序表的操作.pdf
留言与评论(共有 0 条评论) |