数据结构之顺序表(java版)
2016-10-29 19:22
260 查看
要点:
顺序表:采用顺序存储结构的线性表
顺序存储结构和链式存储结构不同,强调的是存储元素在物理地址存储的上连续!可实现随机存取(只要知道第一个元素的内存地址,再通过简单的加减就能找到任意一个元素了)
顺序表耗时在对移动元素上,进行插入、删除时都需要移动元素
本人做顺序表的难点主要在于对顺序表进行插入时,需要多一个存储位,同时又要保存原来的数据 ,详情请看2的insert(int i, Object x)方法。
1、创建接口MyList
主要实现了增、删、改、查
2、SeqList类 实现接口
顺序表:采用顺序存储结构的线性表
顺序存储结构和链式存储结构不同,强调的是存储元素在物理地址存储的上连续!可实现随机存取(只要知道第一个元素的内存地址,再通过简单的加减就能找到任意一个元素了)
顺序表耗时在对移动元素上,进行插入、删除时都需要移动元素
本人做顺序表的难点主要在于对顺序表进行插入时,需要多一个存储位,同时又要保存原来的数据 ,详情请看2的insert(int i, Object x)方法。
1、创建接口MyList
主要实现了增、删、改、查
interface MyList{ boolean isEmpty(); int size(); Object get(int i); void set(int i, Object x); void insert(int i ,Object x); void remove(int i); < 4000 span class="hljs-keyword">void clear(); String toString(); }
2、SeqList类 实现接口
public class SeqList implements MyList { Object[] element; private int length = 0; public SeqList(Object[] o) { element = o; length = o.length; } @Override public boolean isEmpty() { if (length == 0) { return true; } else { return false; } } @Override public int size() { return this.length; } @Override public Object get(int i) { if (this.isEmpty()) { return null; } if (i < 0 || i > this.length) { System.out.println("查找位置不合法"); return null; } return element[i - 1]; } @Override public void set(int i, Object x) { if (i < 0 || i > this.length) { System.out.println("位置不合法"); return ; } element[i]=x; } @Override public void insert(int i, Object x) { if (i < 0 || i > length) { System.out.println("插入位置不合法"); } //用param暂时保存element的值 Object[] param = this.element; // 由于插入 需要多一个存储位 同时长度加1 element = new Object[++length]; for (int j = 0; j < param.length; j++) { element[j] = param[j]; } //插入处向后挪一位 for (int j = element.length - 1; j > i; j--) { element[j] = element[j - 1]; } element[i] = x; } @Override public void remove(int i) { if (i < 0 || i > length) { System.out.println("位置不合法"); } for (int j = i+1; j <length; j++) { element[j-1]= element[j]; } length--; } @Override public void clear() { element=null; length = 0; } @Override public String toString() { if (this.isEmpty()) { return null; } String str = ""; for (int i = 0; i < length; i++) { str += element[i] + " "; } return str; } public static void main(String[] args) { SeqList sl = new SeqList(new String[] { "aa", "bb", "cc","hh" }); System.out.println("raw :"+sl); sl.insert(1, "insert"); System.out.println("insert :" + sl); sl.remove(2); System.out.println("remove :" + sl); System.out.println(sl.get(3)); sl.set(2, "set"); System.out.println("remove :" + sl); } }
相关文章推荐
- 数据结构(java)_数组顺序查找
- 数据结构(java语言描述)顺序栈的使用
- 数据结构——栈—— 顺序栈(附java实现)
- JAVA数据结构之线性表的顺序存储
- 数据结构顺序表的定义(Java)
- JAVA数据结构之顺序表
- 数据结构之基于Java的顺序列表实现
- java数据结构之顺序表应用之大整数求和
- Java单链表顺序和链式实现(数据结构五)
- 数据结构2—Java_栈_顺序存储
- 数据结构(四)---栈的顺序存储的实现---java版
- 记(java数据结构与算法之顺序表与链表深入分析)
- JAVA数据结构之顺序队列的实现
- 数据结构之顺序表Java实现
- java数据结构之顺序表
- 1-java数据结构顺序表的实现
- Java单链表顺序和链式实现(数据结构五)
- 数据结构实验之链表一:顺序建立链表(java)
- 数据结构—顺序表(自己实现Java的ArrayList)
- Java数据结构之顺序表与链表分析和实现