数据结构(java语言描述)-- 表的简单数组实现
来源:互联网 发布:淘宝物品拍照技巧 编辑:程序博客网 时间:2024/06/06 02:04
首先说一下什么是线性表:
线性表:
零个或多个数据元素的有限序列。
他是有限的,元素个数是有限个数的。
他是一个序列,元素之家是有顺序的,如有多个元素,则第一个元素无先驱,最后一个元素无后继,其他每个元素都有
有且仅有一个先驱和后继。
线性表的顺序存储结构:
线性表的顺序存储结构的优缺点:
优点:
- 无须为表示表中元素之间的逻辑关系而增加额外的存储空间。
- 可以快速地存取表中任一位置的元素。
缺点:
- 插入和删除操作需移动大量元素。
- 当线性表长度变化较大时,难以确定存储空间的容量。
- 造成存储空间的“碎片”。
下面给出线性表的简单数组实现的例子:
package com.cly.sjjg;/** * 表的简单数组实现、遍历、查找、插入、删除 * @author lenovo * */public class TestArray {
<span style="white-space:pre"></span>//测试代码public static void main(String[] args) {int[] arr = new int[]{34, 12, 52, 16, 12};//创建并初始化数组TestArray ta = new TestArray();ta.printList(arr);ta.find(arr, 52);ta.findKth(arr, 2);/* * 测试删除时以下两行必须撤销注释,测试插入时必须注释最后一行。 *//*ta.insert(arr, 11, 2);ta.remove(arr, 52);*/}public void printList(int[] arr) {System.out.println("遍历出数组:");for (int i=0; i<arr.length; i++) {System.out.print(arr[i]+"\t");}System.out.println();}/** * * @param arr * @param findValue 返回指定值在数组中的位置 */public int find(int[] arr, int findValue) {int index=0;for (int i=0; i<arr.length; i++) { if (arr[i] == findValue) {index = i;System.out.println("值"+findValue+"在数组中的位置为:\n"+index);break;}}return index;}/** * * @param arr * @param positionValue 返回在数组中指定位置的值 */public int findKth(int[] arr, int positionValue) {int posValue = 0;for (int i=0; i<arr.length; i++) {if (i == positionValue) {posValue = arr[i];System.out.println("数组下标为"+positionValue+"的值是:\n"+arr[i]);break;}}return posValue;}/** * * @param arr * @param x 要插入的值 * @param positionValue 插入指定位置的值 */ int x = 0; int positionValue = 0;public int[] insert(int[] arr, int x, int positionValue) {this.x = x;this.positionValue = positionValue;if (positionValue > arr.length && positionValue < 0) {System.exit(-1);}int[] newArr = new int[arr.length+1];newArr[positionValue] = x;System.arraycopy(arr, 0, newArr, 0, positionValue);System.arraycopy(arr, positionValue, newArr, positionValue+1, newArr.length-positionValue -1);//arr = newArr;//测试删除时必须注释,测试插入时必须撤销注释。System.out.println("将"+x+"值插入数组中位置为"+positionValue+"后的新数组为:");printList(newArr);return newArr;}/** * * @param deleteValue 删除指定数组中的位置的值 */public void remove(int[] arr, int deleteValue) {int[] a = insert(arr, x, positionValue) ;int[] newa = new int[a.length-1];for (int i=0; i<a.length; i++) {if (a[i]==deleteValue) {System.arraycopy(a, 0, newa, 0, i);//先将i之前数组元素复制到新数组newaSystem.arraycopy(a, i+1, newa, i, newa.length-i);//再将i之后数组元素复制到新数组newa}}//a = newa;System.out.println("删除数组中值为"+deleteValue+"后的新数组为:");printList(newa);}}<span style="font-size:18px;"></span>
测试结果:
至于插入和删除大家可以自行测试下。
如果哪里有问题,请留言,一起学习交流(●'◡'●)
0 0
- 数据结构(java语言描述)-- 表的简单数组实现
- 数据结构(java语言描述)-- 队列的循环数组实现
- (数据结构与算法分析 四)------数组循环队列的实现( Java语言描述)
- 数据结构(java语言描述)-- 栈的两种简单实现
- (数据结构与算法分析 三)------栈的实现(包括链栈和数组实现栈 Java语言描述)
- 1.数据结构(C语言)---自定义数组的简单实现
- 《数据结构与算法——C语言描述》答案 3.15 自调整表的实现(数组法)
- 一个简单的矩阵类的实现(参照《数据结构C++语言描述》第五章)
- 数据结构:数组的操作(C语言描述)
- 数据结构:数组的操作(C语言描述)
- 数据结构(java语言描述)-- 二叉查找树的链式存储结构的实现
- (数据结构与算法分析 五)------二叉查找树的实现( Java语言描述)
- (数据结构与算法分析 六)------散列表的实现( Java语言描述)
- 数据结构与算法分析(Java语言描述)(30)—— 有权图的实现
- 链表的实现(Java语言描述)
- 数据结构:栈的链式实现(C语言描述)
- 队列的数组实现(C语言描述)
- 左式堆的简单实现(C语言描述)
- eclipse LD_LIBRARY_PATH 设置
- 01背包和完全背包
- 黑马程序员-Exception
- ZOJ1115
- 描述符相关的时间定时器
- 数据结构(java语言描述)-- 表的简单数组实现
- java处理大数类
- 黑马程序员
- UVA11987(带权并查集的删除操作)
- 黑马程序员——Java多线程—线程同步—阻塞队列:BlockingQueue
- 大数高精度之java处理
- string to int ... 类型转换
- 在PHPStorm中调试PHP代码
- 跳转界面