数据结构(1)--- 线性表顺序表
来源:互联网 发布:js模拟鼠标拖动事件 编辑:程序博客网 时间:2024/06/05 02:25
线性表是具有相同特性的数据元素的一个有限序列,该序列中含有的元素个数叫做线性表的长度.
一般来说哦我们线性表都会分为两种结构存储,一个顺序结构,一个是链式结构.
而我们今天的内容主要是关于顺序存储结构的—顺序表.
其实在Java中我们对应得ArrayList数组就是利用这种特性的.
一般来说需要我们区分去注意的就是以下几点:
1. 我们需要先固定顺序表的长度,所以这样的弊端就是我们的长度存在限制
2. 连续地址存储,所以可以说对空间的浪费比较少
3. 因为我们的随机访问时通过下标访问的,所以时间复杂度为O(1),也是比较省事有效
/** * 1. 初始化定义顺序表长度 * 2. 判断空方法 * 3. 获取长度方法 * 4. 实现插入、删除、获取数据的方法 * @author Administrator * */ public class SequenceList { // 默认最大长度 final int defaultSize = 10; // 最大长度 int maxSize; // 当前长度 int currentSize; // 对象数组 Object[] listArray; // 利用构造函数初始化 public SequenceList() { init(defaultSize); } public SequenceList(int currentSize) { init(currentSize); } // 顺序表的初始方法,用来确定存在的元素个数 private void init(int currentSize) { // TODO Auto-generated method stub maxSize = currentSize; this.currentSize = 0; listArray = new Object[maxSize]; } // 判断是否为空,长度为空 public boolean isEmpty() { return currentSize == 0; } // 插入操作 public void insert(int index, Object object) { if (currentSize == maxSize) { System.out.println("顺序表已满,无法插入"); } if (index < 0 || index > maxSize) { System.out.println("插入位置不合理"); } // 剩下就是插入成功后,移动后面的元素,将每一个index后的元素都能向后以为,就是 // 将元素i的值变成了元素i+1的值,之所以j等于Current-1是不想要越界 for (int j = currentSize - 1; j >= index; j--) { listArray[j + 1] = listArray[j]; } listArray[index] = object; currentSize++; // 长度+1 } // 删除操作 public void delete(int index) { if (isEmpty()) { System.out.println("顺序表为空,无法删除"); if (index < 0 || index > maxSize - 1) { System.out.println("位置存在错误"); } for (int j = index; j < currentSize - 1; j++) { listArray[j] = listArray[j + 1]; } currentSize--; } } public Object get(int index) { if (index < 0 || index >= maxSize) { System.out.println("参数错误"); } return listArray[index]; } // 获取顺序表长度 public int getSize() { return currentSize; } // 测试 public static void main(String[] args) { SequenceList sequenceList = new SequenceList(20); sequenceList.insert(12, "小明"); Object f = sequenceList.get(12); sequenceList.insert(13, "小明"); int size = sequenceList.getSize(); System.out.println(f); System.out.println(size); } }
思想:
1. 因为顺序表的位置相对开始就是固定的,假如需要插入,就要将后面的元素进行后移(这就需要使用我们的for循环),长度改变.
2. 对应的假如我们删除元素,我们后面的元素就要前移,长度改变
3. 注意上面的长度指的是我们当前的长度,其实我们一开始定义的最大长度还没有到达,不然就会报错,因为最大长度是固定的.
优缺点比较:
1. 顺序表的优点是:支持随机访问;空间利用率高(连续分配,不存在空间浪费)。
2. 顺序表的缺点是:大小固定(一开始就要固定顺序表的最大长度);插入和删除元素需要移动大量的数据。
0 0
- 顺序线性表-数据结构(1)
- 数据结构--顺序线性表
- 数据结构--顺序线性表
- 线性数据结构--顺序表
- 数据结构-线性顺序表
- 数据结构(1)--- 线性表顺序表
- 数据结构线性表的顺序实现1
- 数据结构-线性表-顺序表
- 数据结构-线性表-顺序表
- 数据结构 线性表 顺序表
- 数据结构-线性表-顺序表
- 【数据结构-线性表】顺序表
- 数据结构-线性表-顺序表
- 数据结构实现顺序线性表
- 数据结构--线性表顺序存储
- 数据结构线性表顺序建链表
- 数据结构--线性表顺序实现
- 数据结构---线性表---顺序存储
- 关于百度APIStore提供的接口调用失败问题
- SQL学习及回顾第一篇总结
- ORACLE 数据存储结构之逻辑存储结构
- 在直线上画箭头的实现
- HTML5缓存机制浅析:移动端Web加载性能优化
- 数据结构(1)--- 线性表顺序表
- ext与struts2结合
- 二叉树遍历(递归)
- 8多态-Java编程思想
- 动态规划解——有向图中的最长路径 【转载】
- 配置MongoDB的环境变量及好处(三)
- Java多线程 -- JUC包源码分析1 -- CAS/乐观锁
- 色彩构成与搭配——色彩的设计
- 数据结构(2)- 单链表